CN110249317A - 用于实时图像变换的无未命中高速缓存结构 - Google Patents
用于实时图像变换的无未命中高速缓存结构 Download PDFInfo
- Publication number
- CN110249317A CN110249317A CN201880008052.XA CN201880008052A CN110249317A CN 110249317 A CN110249317 A CN 110249317A CN 201880008052 A CN201880008052 A CN 201880008052A CN 110249317 A CN110249317 A CN 110249317A
- Authority
- CN
- China
- Prior art keywords
- image
- gpu
- cache
- row
- hmd
- 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
- 230000009466 transformation Effects 0.000 title description 5
- 238000000034 method Methods 0.000 claims abstract description 55
- 230000033001 locomotion Effects 0.000 claims description 31
- 238000003860 storage Methods 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 21
- 238000010276 construction Methods 0.000 claims description 15
- 239000011159 matrix material Substances 0.000 claims description 15
- 230000000007 visual effect Effects 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 12
- 230000003190 augmentative effect Effects 0.000 claims description 8
- 230000002708 enhancing effect Effects 0.000 claims description 4
- 238000000151 deposition Methods 0.000 claims description 3
- 238000009877 rendering Methods 0.000 claims description 3
- 230000006835 compression Effects 0.000 claims 1
- 238000007906 compression Methods 0.000 claims 1
- 235000019580 granularity Nutrition 0.000 claims 1
- 210000001508 eye Anatomy 0.000 description 26
- 238000005516 engineering process Methods 0.000 description 15
- 238000001514 detection method Methods 0.000 description 14
- 210000003128 head Anatomy 0.000 description 14
- 238000003384 imaging method Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 210000005252 bulbus oculi Anatomy 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 210000004087 cornea Anatomy 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 239000011521 glass Substances 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 230000036760 body temperature Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 230000004807 localization Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 240000006409 Acacia auriculiformis Species 0.000 description 1
- PEDCQBHIVMGVHV-UHFFFAOYSA-N Glycerine Chemical compound OCC(O)CO PEDCQBHIVMGVHV-UHFFFAOYSA-N 0.000 description 1
- 108091069677 HMD family Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000036772 blood pressure Effects 0.000 description 1
- 230000007177 brain activity Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 210000005069 ears Anatomy 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 125000000524 functional group Chemical group 0.000 description 1
- 238000009532 heart rate measurement Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 210000001747 pupil Anatomy 0.000 description 1
- 230000011514 reflex Effects 0.000 description 1
- 230000036387 respiratory rate Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
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
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/0101—Head-up displays characterised by optical features
- G02B27/0103—Head-up displays characterised by optical features comprising holographic elements
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/017—Head mounted
-
- G—PHYSICS
- G03—PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
- G03H—HOLOGRAPHIC PROCESSES OR APPARATUS
- G03H1/00—Holographic processes or apparatus using light, infrared or ultraviolet waves for obtaining holograms or for obtaining an image from them; Details peculiar thereto
- G03H1/0005—Adaptation of holography to specific applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/16—Constructional details or arrangements
- G06F1/1613—Constructional details or arrangements for portable computers
- G06F1/163—Wearable computers, e.g. on a belt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/147—Digital output to display device ; Cooperation and interconnection of the display device with other functional units using display panels
-
- 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
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G3/00—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
- G09G3/001—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes using specific devices not provided for in groups G09G3/02 - G09G3/36, e.g. using an intermediate record carrier such as a film slide; Projection systems; Display of non-alphanumerical information, solely or in combination with alphanumerical information, e.g. digital display on projected diapositive as background
- G09G3/003—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes using specific devices not provided for in groups G09G3/02 - G09G3/36, e.g. using an intermediate record carrier such as a film slide; Projection systems; Display of non-alphanumerical information, solely or in combination with alphanumerical information, e.g. digital display on projected diapositive as background to produce spatial visual effects
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/0101—Head-up displays characterised by optical features
- G02B2027/014—Head-up displays characterised by optical features comprising information/image processing systems
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/017—Head mounted
- G02B2027/0178—Eyeglass type
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/0179—Display position adjusting means not related to the information to be displayed
- G02B2027/0187—Display position adjusting means not related to the information to be displayed slaved to motion of at least a part of the body of the user, e.g. head, eye
-
- G—PHYSICS
- G03—PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
- G03H—HOLOGRAPHIC PROCESSES OR APPARATUS
- G03H1/00—Holographic processes or apparatus using light, infrared or ultraviolet waves for obtaining holograms or for obtaining an image from them; Details peculiar thereto
- G03H1/0005—Adaptation of holography to specific applications
- G03H2001/0088—Adaptation of holography to specific applications for video-holography, i.e. integrating hologram acquisition, transmission and display
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/455—Image or video data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2340/00—Aspects of display data processing
- G09G2340/04—Changes in size, position or resolution of an image
- G09G2340/0492—Change of orientation of the displayed image, e.g. upside-down, mirrored
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2350/00—Solving problems of bandwidth in display systems
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
- G09G2360/121—Frame memory handling using a cache memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
在此公开了用于提供改进的高速缓存结构和方法的系统和方法,高速缓存结构被最佳地调整大小以支持预定范围的后期调整,并且其中图像数据被智能地从DRAM读出,并以消除从DRAM重新获取输入图像数据并最小化DRAM带宽和功率的方式被高速缓存。
Description
背景技术
背景和相关技术
混合现实是一种允许在显示器中将虚拟影像与真实世界物理环境混合的技术。用于混合现实的系统可以包括例如透视头戴式显示器(HMD)设备或具有内置相机的智能电话。这种系统通常包括在一个或多个应用的控制下提供影像的处理单元。使用HMD和其他设备还可以支持完整的虚拟现实环境,其中没有可查看的真实世界对象。
许多HMD还包括一个或多个前向的相机,其捕捉用户前方的环境,好像从用户的视角查看一样。这种前向的相机可以是深度相机,其不仅捕捉图像数据,还捕捉关于用户环境的深度或表面数据。从前向的相机捕捉的图像数据可以由位于HMD上的板上处理器使用,以生成混合现实或虚拟现实显示数据,该数据可以经由并入HMD中的用户显示器而被呈现给用户。
在这种系统中,用户的身体并且特别是头部可以相对于虚拟环境实时移动。例如,在混合现实应用中,如果用户在一个方向上倾斜他们的头部,则他们不期望图像或全息图与他们一起倾斜。理想地,系统将测量头部的定位并以足够快的速率呈现图像以消除用户所感知的图像定位中的任何抖动或漂移。然而,通常的图形处理单元(GPU)当前仅呈现每秒在30帧到60帧之间的帧,这取决于GPU的质量和性能。这导致在检测到头部定位的时间点与图像实际被输出到显示器的时间之间的潜在延迟为16毫秒至33毫秒。附加延时还可以与确定头部定位所花费的时间和/或在GPU的帧缓冲器和最终显示器之间的延迟相关联。结果是在用户期望图像的位置和图像被显示的位置之间潜在大的错误,从而导致用户不适。
为了减少或消除这种错误,现有系统可以应用后期校正以在图像由GPU呈现之后但在显示像素之前对图像进行调整(有时在下文中被称为“后期调整”、“后期重新投影”、“LSR”或“LSR调整”),以便补偿由于头部移动引起的旋转、平移和/或放大。由于帧可以以高速率和高分辨率呈现,因此采用LSR的现有系统可能需要大量的DRAM带宽和功率。当然,在无线、电池供电的HMD的上下文中,芯片尺寸以及带宽和功率要求可能非常重要。
本文所要求保护的主题内容不限于解决任何缺点或仅在诸如上述那些环境中操作的实施例。而是,提供该背景技术仅用于说明可以实践本文描述的一些实施例的一个示例性技术领域。
发明内容
本文公开了用于提供改进的高速缓存结构和方法的系统和方法,高速缓存结构被最佳地调整大小以支持预定范围的后期调整,并且其中图像数据被智能地从DRAM读出,并以消除从DRAM重新获取输入图像数据并最小化DRAM带宽和功率的方式被高速缓存。
在一个实施例中,高速缓存结构被最佳地调整大小以支持预定范围的后期调整,并且被管理成使得:高速缓存/缓冲器可以只获取输入图像数据的每条线一次以减少输入带宽;高速缓存可以保持足够构造输出图像的多条线(但仍然比完整图像小得多);高速缓存可以在数据被需要之前预取数据,以便它不会给图像处理流水线增加任何附加延时;并且只有当不再需要该数据来构造输出图像时,高速缓存才能驱逐输入图像数据,但是当不再需要时,它可以自动驱逐输入图像数据。
在另一方面,输入图像数据最初可以按照开始呈现输出图像所需的顺序被写入到高速缓存中。
在又一方面,输入图像数据可以被写入到高速缓存中并且按照使得可预测输出图像数据从高速缓存读出的顺序的方式进行组织。
提供本发明内容是为了以简化的形式介绍一些构思,这些构思将在下面的具体描述中进一步描述。本发明内容不旨在标识所要求保护的主题内容的关键特征或必要特征,也不旨在被用来帮助确定所要求保护的主题内容的范围。
附加的特征和优点将在下面的描述中阐述,并且部分地将从描述中变得明显,或者可以通过实践本文的教导来学习。借助于所附权利要求中特别指出的仪器和组合,可以实现和获得本发明的特征和优点。从以下描述和所附权利要求,本发明的特征将变得更加明显,或者可以通过实践如下文所阐述的本发明来学习。
附图说明
为了描述可以获得上述和其他优点和特征的方式,将通过参考附图中图示的特定实施例来呈现上面简要描述的主题内容的更具体的描述。应当理解,这些附图仅描绘了典型的实施例,因此不应当认为是对其范围的限制,将通过使用附图的附加的特征和细节来描述和解释实施例,其中:
图1是用于实现本文所公开的系统和方法的操作环境的一个说明性示例的功能框图。
图2是HMD的一个说明性示例的示意表示。
图3是HMD的一个说明性示例的功能框图。
图4是HMD的图像呈现子系统的一个说明性示例的某些相关部件的功能框图。
图5是GPU图像帧的示意表示。
图6是图5的GPU图像帧叠加在经LSR调整的输出图像帧的示意表示上的示意表示。
图7A、图7B和图8是本文所公开的改进的高速缓存结构和方法的说明性实施例的示意表示。
具体实施方式
以下讨论现在涉及可以执行的许多方法和方法动作。虽然方法动作可能按照特定顺序讨论或在流程图中被图示为按照特定顺序发生,但不需要特定排序,除非因为动作取决于在执行该动作之前完成的另一动作而特别说明或要求。
如本文所使用的:术语“输入图像数据”或“GPU图像数据”可以互换使用,以指代由HMD的GPU生成的图像数据;并且术语“输出图像数据”或“显示图像数据”可以互换使用,以指代由本文公开的改进的高速缓存输出的用以呈现经LSR调整的显示图像的数据。
提供以下描述中包括的子标题是为了方便读者,以帮助读者导航本公开,并且不旨在限制或用于解释本公开或所附权利要求的本质或范围。
下面描述的技术涉及改进的高速缓存结构和方法,高速缓存结构被设计为被最佳地调整大小以支持预定范围的后期调整,并且其中图像数据被智能地从DRAM读出,并以消除从DRAM重新获取输入图像数据并最小化DRAM带宽和功率的方式被高速缓存。高速缓存结构被最佳地调整大小以支持预定范围的后期调整,并且被管理成使得:高速缓存/缓冲器可以只获取输入图像数据的每条线一次以减少输入带宽;高速缓存可以保持足够构造输出图像的多条线(但仍然比完整图像小得多);高速缓存可以在数据被需要之前预取数据,以便它不会给图像处理流水线增加任何附加延时;并且只有当不再需要该数据来构造输出图像时,高速缓存才能驱逐输入图像数据,但是当不再需要时,它可以自动驱逐输入图像数据。输入图像数据最初可以按照开始呈现输出图像所需的顺序被写入到高速缓存中,并且输入图像数据可以按照使得可预测输出图像数据从高速缓存读出的顺序的方式被写入到高速缓存中并进行组织。
该技术包括用于提供改进的高速缓存结构的方法和系统,该改进的高速缓存结构旨在用于头戴式增强混合或虚拟现实显示系统(HMD)的上下文中,该系统具有图形处理单元(GPU)、带有片上高速缓存的全息处理单元(HPU)、系统存储器和显示器,GPU生成图像,该图像可以包括可以在显示器上显示的文本、全息对象和其他可视元素,系统存储器用于存储GPU图像,并且HPU被配置成执行后期调整以针对在图像呈现过程中可能发生的HMD的移动来校正GPU图像,并且高速缓存用于基于GPU生成的图像和后期调整来构造输出图像,并且HPU生成后期调整矩阵,该后期调整矩阵将经后期调整的输出图像的每个像素映射到GPU图像的对应像素。
在一个实施例中,方法可以包括:执行从系统存储器对GPU图像的一行或多行的初始预取,按照构造输出图像所需的顺序选择该一行或多行;基于后期调整矩阵,按照构造输出图像所需的顺序将GPU图像的初始预取的一行或多行写入到高速缓存中;以及根据调整矩阵,通过使GPU图像的初始预取的一行或多行行进到高速缓存中来构造输出图像,并且将输出图像输出。附加方法还可以包括:调整高速缓存的大小以支持预定范围的后期调整;预取足够数目的行,以使构造输出图像的第一部分所需的所有行都存在于高速缓存中;写入初始预取的一行或多行,构造输出图像所需的第一行被放置在高速缓存的中间,并且该一行或多行中的其他行中的每个基于它们在GPU图像中的相对定位而被放置在第一行的上方或下方;在显示器上呈现输出图像;根据需要周期性地执行附加的预取操作以取回GPU图像的一个或多个附加行,基于后期调整矩阵,按照构造输出图像所需的顺序,选择GPU图像的一个或多个附加行,并将其写入到高速缓存中;当不再需要GPU图像的每行来构造输出图像时,自动从高速缓存中驱逐GPU图像的每行;通过利用在随后的预取操作期间取回的GPU图像的一个或多个附加行来重写高速缓存中已经存在的GPU图像的一行或多行来自动驱逐行;和/或GPU图像的每行具有垂直坐标和值,垂直坐标和值是基于其在GPU图像内相对于GPU图像中的其他行的定位,并且其中高速缓存中的具有最低垂直坐标值的任何现有行被首先重写。
在另一实施例中,该方法可以包括:确定HMD的预测姿势;将与预测姿势相对应的图像呈现到存储器中;检测HMD的更新的预测姿势并确定预测姿势和更新的预测姿势之间的delta(HMD的旋转角度);基于该delta,计算开始将所呈现图像变换为对应于更新的预测姿势的重新投影图像所需的减少量的图像数据;创建高速缓存,其中调整高速缓存的大小以保持该减少量的图像数据;将减少量的图像数据的第一块从存储器预取到高速缓存中;根据预定的变换矩阵遍历预取的减少量的图像数据,以将所呈现图像变换为重新投影的图像,其中在X方向上移动之前,遍历首先在Y方向上向下扫描一个或多个像素,Y方向上的一个或多个像素与delta成比例;以及一旦变换不再需要它,就自动从高速缓存中驱逐图像数据。
该技术还涉及实现本文所描述的一种或多种方法的系统。更具体地,这种系统可以包括一个或多个处理器和其上存储有指令的一个或多个计算机可读介质,指令由一个或多个处理器可执行,以将计算机系统配置成实现本文所公开的一个或多个方法。
示例性操作环境
图1是可以实践所公开的技术的联网计算环境100的一个实施例的框图。联网计算环境100包括通过一个或多个网络180互连的多个计算设备。一个或多个网络180允许特定计算设备连接到另一计算设备并与另一计算设备通信。所描绘的计算设备包括移动设备11、移动设备12、移动设备19和服务器15。在一些实施例中,多个计算设备可以包括未示出的其他计算设备。在一些实施例中,多个计算设备可以包括多于或少于图1中所示数目的计算设备。一个或多个网络180可以包括安全网络(诸如企业专用网络)、不安全网络(诸如无线开放网络、局域网(LAN)、广域网(WAN)和因特网)。一个或多个网络180中的每个网络可以包括集线器、桥接器、路由器、交换机和有线传输介质(诸如有线网络或直接有线连接)。
服务器15(其可以包括补充信息服务器或应用服务器)可以允许客户端从服务器下载信息(例如,文本、音频、图像和视频文件)或者执行与存储在服务器上的特定信息相关的搜索查询。一般来说,“服务器”可以包括硬件设备,该硬件设备在客户端-服务器关系或软件过程中充当与一个或多个客户端共享资源或者为一个或多个客户端执行工作的主机。客户端-服务器关系中的计算设备之间的通信可以由客户端向服务器发送要求访问特定资源或者要求执行特定工作的请求来发起。服务器随后可以执行所请求的动作并将响应发送回客户端。
服务器15的一个实施例包括网络接口155、处理器156、存储器157和转换器158,它们全部彼此通信。网络接口155允许服务器15连接到一个或多个网络180。网络接口155可以包括无线网络接口、调制解调器和/或有线网络接口。处理器156允许服务器15执行存储在存储器157中的计算机可读指令,以便执行本文讨论的过程。转换器158可以包括用于将第一文件格式的第一文件转换成第二文件格式的对应的第二文件的映射逻辑(即,第二文件可以是第一文件的转换版本)。可以使用文件映射指令来配置转换器158,该文件映射指令提供用于将第一文件格式(或其各部分)的文件映射到第二文件格式的对应文件的指令。
移动设备19的一个实施例包括网络接口145、处理器146、存储器147、相机148、传感器149和显示器150,它们全部彼此通信。网络接口145允许移动设备19连接到一个或多个网络180。网络接口145可以包括无线网络接口、调制解调器和/或有线网络接口。处理器146允许移动设备19执行存储在存储器147中的计算机可读指令,以便执行本文讨论的过程。相机148可以捕捉环境的彩色图像和/或深度图像。移动设备19可以包括捕捉环境的图像的向外的相机和捕捉移动设备的终端用户的图像的向内的相机。传感器149可以生成与移动设备19相关联的运动和/或定向信息。在一些情况下,传感器149可以包括惯性测量单元(IMU)。显示器150可以显示数字图像和/或视频。显示器150可以包括透视显示器。显示器150可以包括LED或OLED显示器。
在一些实施例中,包括网络接口145、处理器146、存储器147、相机148和传感器149的移动设备19的各种组件可以被集成在单个芯片基板上。在一个示例中,网络接口145、处理器146、存储器147、相机148和传感器149可以被集成为片上系统(SOC)。在其他实施例中,网络接口145、处理器146、存储器147、相机148和传感器149可以被集成在单个封装内。
在一些实施例中,移动设备19可以通过采用相机148、传感器149和在处理器146上运行的姿势识别软件来提供自然用户界面(NUI)。利用自然用户界面,人的身体部位和移动可以被检测、解译和用来控制计算应用的各个方面。在一个示例中,利用自然用户界面的计算设备可以推断与计算设备交互的人的意图(例如,终端用户已经执行特定姿势以便控制计算设备)。
联网计算环境100可以为一个或多个计算设备提供云计算环境。云计算是指基于因特网的计算,其中共享的资源、软件和/或信息经由因特网(或其他全球网络)按需被提供给一个或多个计算设备。术语“云”被用作因特网的隐喻,其是基于计算机联网图中使用的将因特网描绘为它所表示的底层基础设施的抽象的云图。
在一个示例中,移动设备19包括HMD,其向HMD的终端用户提供增强混合或虚拟的现实环境。在增强或混合现实环境的上下文中,HMD可以包括视频透视和/或光学透视系统。由终端用户佩戴的光学透视HMD可以允许实际直接查看真实世界环境(例如,经由透明镜头),并且可以同时将虚拟对象的图像投影到终端用户的视场中,因此利用虚拟对象增强了由终端用户感知的真实世界环境。
利用HMD,佩戴HMD的终端用户可以在真实世界环境(例如,起居室)四处移动并且感知覆盖有虚拟对象的图像的真实世界的视图。虚拟对象可能看起来与真实世界环境保持一致的空间关系(即,当终端用户转头或在真实世界环境中移动时,显示给终端用户的图像将改变,以使虚拟对象看起来存在于终端用户所感知的真实世界环境中)。虚拟对象也可以看起来相对于终端用户的视点固定(例如,虚拟菜单总是出现在终端用户的视点的右上角,而不管终端用户如何转动他们的头部或如何在现实环境内移动)。在一个实施例中,真实世界环境的环境映射可以由服务器15(即,在服务器侧)执行,而相机定位可以在移动设备19上(即,在客户端侧)被执行。虚拟对象可以包括与真实世界对象相关联的文本描述。
在一些实施例中,诸如移动设备19的移动设备可以与云中的服务器(诸如服务器15)通信,并且可以向服务器提供与移动设备相关联的位置信息(例如,移动设备的位置,经由GPS坐标)和/或图像信息(例如,关于在移动设备的视场内检测到的对象的信息)。作为响应,服务器可以基于提供给服务器的位置信息和/或图像信息向移动设备传送一个或多个虚拟对象。在一个实施例中,移动设备19可以指定用于接收一个或多个虚拟对象的特定文件格式,并且服务器15可以向移动设备19传送在该特定文件格式的文件内体现的一个或多个虚拟对象。
在一些实施例中,诸如移动设备19的HMD可以使用从向外的相机捕捉的环境的图像,以便确定与相对于环境的3D模型的图像相对应的六个自由度(6DOF)姿势。6DOF姿势可以包括与环境内HMD的定位和定向相关联的信息。6DOF姿势可以被用于定位HMD并用于生成虚拟对象的图像,以使虚拟对象看起来存在于环境内的适当位置。可以在美国专利申请序列号13/152220“Distributed Asynchronous Localization and Mapping for AugmentedReality”中找到关于确定6DOF姿势的更多信息。可以在美国专利申请序列号13/017474“Mobile Camera Localization Using Depth Maps”中找到关于对移动设备执行姿态估计和/或定位的更多信息。
在一些实施例中,诸如移动设备19的HMD可以以比用于核心呈现流水线或呈现图形处理单元(GPU)的呈现帧的速率大的帧速率在增强现实(AR)环境内显示虚拟对象的图像。HMD可以基于以比呈现帧的速率更高的频率提供的更新的姿势估计,来修改预呈现图像或转发以呈现帧的速率呈现的预测图像。在一些实施例中,HMD可以基于处于呈现帧的速率的预测姿势生成预呈现图像(例如,每16ms),在生成预呈现图像之后确定与HMD相关联的一个或多个更新的姿势(例如,每2ms),基于一个或多个更新的姿势和预呈现图像生成一个或多个更新的图像,并在HMD上显示一个或多个更新的图像。在一些情况下,可以使用显示器(诸如显示器150)内的电路装置经由单应变换和/或像素偏移调整来生成一个或多个更新的图像。
图2描绘了诸如图1中的移动设备19的HMD 200的一部分的一个实施例。仅描绘了HMD 200的右侧。HMD 200包括右眼镜腿202,鼻梁204、眼镜216和眼镜框架214。右眼镜腿202包括与处理单元236通信的捕捉设备213(例如,前向的相机和/或麦克风)。捕捉设备213可以包括用于记录数字图像和/或视频的一个或多个相机,并且可以将可视记录传送到处理单元236。一个或多个相机可以捕捉颜色信息、IR信息和/或深度信息。捕捉设备213还可以包括用于记录声音的一个或多个麦克风,并且可以将音频记录传送到处理单元236。
右眼镜腿202还包括生物特征传感器220、眼睛追踪系统221、耳机230、运动和定向传感器238、GPS接收器232、电源239和无线接口237,它们都与处理单元236通信。生物特征传感器220可以包括用于确定与HMD 200的终端用户相关联的脉冲或心率的一个或多个电极以及用于确定与HMD 200的终端用户相关联的体温的温度传感器。在一个实施例中,生物特征传感器220包括压在终端用户的太阳穴上的脉冲速率测量传感器。运动和定向传感器238可以包括三轴磁力计、三轴陀螺仪和/或三轴加速度计。在一个实施例中,运动和定向传感器238可以包括惯性测量单元(IMU)。GPS接收器可以确定与HMD 200相关联的GPS位置。处理单元236可以包括一个或多个处理器和用于存储在一个或多个处理器上待执行的计算机可读指令的存储器。存储器还可以存储在一个或多个处理器上待执行的其他类型的数据。
在一个实施例中,眼睛追踪系统221可以包括一个或多个向内的相机。在另一实施例中,眼睛追踪系统221可以包括眼睛追踪照明源和相关联的眼睛追踪图像传感器。在一个实施例中,眼睛追踪照明源可以包括一个或多个红外(IR)发射器,诸如发射大约预定IR波长或一系列波长的红外发光二极管(LED)或激光器(例如VCSEL)。在一些实施例中,眼睛追踪传感器可以包括用于追踪闪烁定位的IR相机或IR定位敏感检测器(PSD)。关于眼睛追踪系统的更多信息可以在2008年07月22日公布的标题为“Head Mounted Eye Tracking andDisplay System”的美国专利号7,401,920和在2011年09月26日提交的标题为“IntegratedEye Tracking and Display System”的美国专利申请序列号13/245,700中找到。
在一个实施例中,眼镜216可以包括透视显示器,由此处理单元236所生成的图像可以在透视显示器上被投影和/或显示。透视显示器可以通过调制提供给显示器(诸如硅上液晶(LCOS)显示器)的光或通过在显示器(诸如OLED显示器)内生成光来显示虚拟对象的图像。捕捉设备213可以被校准,以使捕捉设备213所捕捉的视场(FOV)对应于HMD 200的终端用户所看到的FOV。耳机230可以被用来输出与虚拟对象的投影图像相关联的声音。在一些实施例中,HMD 200可以包括两个或更多个前向的相机(例如,每个镜腿上一个),以便从与由前向的相机捕捉的FOV相关联的立体信息获得深度。两个或更多个前向的相机还可以包括3D、IR和/或RGB相机。还可以利用来自运动技术的深度从单个相机获取深度信息。例如,可以从与在不同时间点的空间中的两个不同点相关联的单个相机获取两个图像。然后,给定关于空间中的两个不同点的定位信息,可以执行视差计算。
在一些实施例中,HMD 200可以使用视线检测元件和与一个或多个人眼元素(诸如角膜中心、眼球旋转的中心或瞳孔中心)相关的三维坐标系,对终端用户眼睛中的每只眼睛执行视线检测。可以使用视线检测来标识终端用户在FOV内聚焦的位置。视线检测元件的示例可以包括闪烁生成照明器和用于捕捉表示所生成的闪烁的数据的传感器。在一些情况下,可以使用平面几何形状,基于两个闪烁来确定角膜的中心。角膜的中心链接瞳孔中心和眼球旋转的中心,角膜的中心可以被视为固定位置,以用于在特定视线或视角下确定终端用户的眼睛的光学轴。
图3示出了混合现实显示系统300的一个示例的功能框图。显示系统300可以包括形成透视显示子系统304的一部分的一个或多个镜头302,使得可以使用镜头302来显示图像(例如,使用到镜头302上的投影、合并到镜头302中的一个或多个波导系统,和/或以任何其他合适的方式)。显示系统300还可以包括一个或多个向外的图像传感器306,其被配置成获取用户正在查看的背景场景和/或物理环境的图像,并且可以包括一个或多个麦克风308,麦克风308被配置成检测诸如来自用户的语音命令的声音。向外的图像传感器306可以包括一个或多个深度传感器和/或一个或多个二维图像传感器。在备选的布置中,代替包含透视显示子系统,显示系统300可以通过用于向外的图像传感器的取景器模式显示混合现实图像。
显示系统300还可以包括视线检测子系统310,其被配置用于检测用户的每只眼睛的视线的方向,或焦点的方向或位置,如上面所描述的那样。视线检测子系统310可以被配置成以任何合适的方式确定用户眼睛中的每只眼睛的视线方向。例如,在所示的说明性示例中,视线检测子系统310包括一个或多个闪烁源312(诸如红外光源)和一个或多个图像传感器314(诸如向内的传感器),闪烁源312被配置成使得闪烁的光从用户的每个眼球反射,图像传感器314被配置成捕捉用户的每个眼球的图像。如从使用(多个)图像传感器314收集的图像数据所确定的,来自用户眼球的闪烁和/或用户瞳孔的位置的改变可以被用来确定视线的方向。
另外,从用户的眼睛投射的视线与外部显示器相交的位置可以被用来确定用户正注视的对象(例如,所显示的虚拟对象和/或真实背景对象)。视线检测子系统310可以具有任何合适数目和布置的光源和图像传感器。在一些实现中,可以省略视线检测子系统1110。
显示系统300还可以包括附加的传感器。例如,显示系统300可以包括全球定位系统(GPS)子系统316,以允许确定显示系统300的位置。这可以帮助标识可能位于用户的邻接物理环境中的真实世界对象,诸如建筑物等。
显示系统300还可以包括一个或多个运动传感器318(例如,惯性传感器、多轴陀螺仪传感器或加速度传感器),以在用户佩戴作为混合现实HMD设备的一部分的系统时检测用户头部的移动和定位/定向/姿势。运动数据可以潜在地与眼睛追踪闪烁数据和向外的图像数据一起被用于视线检测,以及用于图像稳定以帮助校正来自(多个)向外的图像传感器306的图像中的模糊。即使来自(多个)向外的图像传感器306的图像数据不能被解析,运动数据的使用也可以允许待追踪的视线位置的改变。
另外,运动传感器318以及(多个)麦克风308和视线检测子系统310也可以被用作用户输入设备,使得用户可以经由眼睛、颈部和/或头部的姿势,以及在一些情况下经由语音命令与显示系统300交互。应当理解,在图3和图4中图示并在附随的文本中描述的传感器是出于示例的目的被包括,而不旨在以任何方式进行限制,因为任何其他合适的传感器和/或传感器的组合可以被利用来满足混合现实HMD设备的特定实现的需求。例如,可以在一些实现中利用生物特征传感器(例如用于检测心脏和呼吸速率、血压、大脑活动、体温等)或环境传感器(例如用于检测温度、湿度、海拔、U-V(紫外线)光等级等)。
显示系统300还可以包括控制器320,控制器320具有逻辑子系统322和数据存储子系统324,数据存储子系统324通过通信子系统326与传感器、视线检测子系统310、显示子系统304和/或其他组件通信。通信子系统326还可以促进显示系统与远程定位的资源(诸如处理、存储、电源、数据和服务)一起操作。即,在一些实现中,HMD设备可以作为可以在不同组件和子系统之中分配资源和能力的系统的一部分来操作。
存储子系统324可以包括存储在其上的指令,指令由逻辑子系统322可执行,例如,以接收和解译来自传感器的输入、标识用户的位置和移动、使用表面重建和其他技术来标识真实对象,以及基于到对象的距离来调暗/淡出显示以便使得对象能够被用户看到,以及其他任务。
显示系统300配置有一个或多个音频换能器328(例如,扬声器、耳机等),使得音频可以用作混合现实体验的一部分。功率管理子系统330可以包括一个或多个电池332和/或保护电路模块(PCM)以及相关联的充电器接口334和/或用于向显示系统300中的组件供应功率的远程功率接口。
可以理解,出于示例的目的描述了显示设备19、200和300,并且因此并不意在限制。应当进一步理解,除了所示的以外,显示设备可以包括附加的和/或备选的传感器、相机、麦克风、输入设备、输出设备等,而不脱离本发明的布置的范围。附加地,显示设备及其各种传感器和子组件的物理配置可以采用各种不同的形式而不脱离本发明的布置的范围。
微软全息透镜
HMD的一个示例是微软全息透镜,其是一对混合现实头戴式智能眼镜。全息透镜具有透视全息镜头,其使用先进的光学投射系统以非常低的延时来生成多维全彩全息图,因此用户可以在真实世界设置中看到全息对象。
位于全息透镜前部的是传感器和相关硬件,包括相机和处理器。全息透镜还包含惯性测量单元(IMU),IMU包括加速度计、陀螺仪和磁力计、四个“环境理解”传感器、具有120°×120°视角的能量高效深度相机、前向的240万像素摄影摄像机、四麦克风阵列、以及环境光传感器。全息透镜包含高级传感器,以捕获关于用户正在做什么和用户所处的环境的信息。内置相机还使得用户能够记录周围世界中的全息图的(混合现实捕获(MRC))HD图片和视频,以与他人分享。
封闭在面罩内的是一对透明的组合器镜头,其中投射的图像在下半部分中被显示。全息透镜必须根据瞳孔间距(IPD)或用户的习惯视野进行校准。
沿着侧面的底部边缘,位于用户耳朵附近,是一对小型3D音频扬声器。扬声器不会阻碍外部声音,允许用户听到虚拟声音以及环境。使用与头部相关的传递函数,全息透镜生成双耳音频,该双耳音频可以模拟空间效果;这意味着用户实际上可以感知和定位声音,就好像它来自虚拟针点或位置。
在顶部边缘上是两对按钮:左耳上方的显示亮度按钮、以及右耳上方的音量按钮。相邻的按钮形状不同—一个凹面、一个凸面—以便用户可以通过触摸区分它们。
在左臂的末端处是电源按钮和一排五个小的单独的LED节点,用以指示系统状态,以及对于功率管理,指示电池电量和设置功率/待机模式。USB2.0微型B插座沿底部边缘定位。3.5mm音频插孔沿右臂的底部边缘定位。
除了中央处理单元(CPU)和GPU之外,全息透镜的特征还在于定制的微软全息处理单元(HPU),其是专为全息透镜制造的协处理器。HPU的主要目的是处理和集成来自传感器的数据,以及处理诸如空间映射、姿势识别、以及声音和语音识别之类的任务。HPU处理来自全息透镜的传感器的来自实时数据的万亿字节的信息。
全息透镜的镜头使用光学波导跨三个不同的层着蓝色、绿色和红色,每个层具有衍射特征。每个组合器镜头上方的光引擎将光投射到镜头中,其波长然后击中衍射元件并且沿着波导重复反射,直到它输出到眼睛。与许多其他光学头戴式显示器类似,对全息透镜的显示投射占据用户的FOV的有限部分,特别是与虚拟现实头戴式显示器相比,后者通常覆盖大得多的FOV。
全息透镜包含内部可再充电电池,但是可以在充电时被操作。全息透镜的特征还在于IEEE802.11acWi-Fi和蓝牙4.1低功耗(LE)无线连接性。
利用全息透镜,用户可以利用姿势来创建和形成全息图、使用语音命令与应用通信,以及利用扫视、手部姿势、控制器和/或其他指示设备来导航。全息透镜理解姿势、视线和语音,使得用户能够以可能的最自然的方式进行交互。利用空间声音,全息透镜合成声音,因此用户可以从房间中的任何地方听到全息图,即使它们在用户后面。
关于全息透镜的各种实施例的附加细节可以在2014年07月25日提交的标题为“Head Mounted Display Experiences”的美国临时专利申请序列号62/029,351、2015年01月20日提交的标题为“Anti-Trip when Immersed in a Virtual Reality Environment”的美国专利申请序列号14/600,774、2015年02月02日提交的标题为“Ground PlaneAdjustment in a Virtual Reality Environment”的美国专利申请序列号14/611,447、2015年02月03日提交的标题为“Smart Placement of Virtual Objects to Stay in theField of View of a Head Mounted Display”的美国专利申请序列号为14/612,850、2015年04月16日提交的标题为“Virtual Reality Environment with Real World Objects”的美国专利申请序列号14/688,695、2015年04月16日提交的标题为“Three-DimensionalMixed-Reality Viewport”的美国专利申请序列号14/688,817、2015年04月27日提交的标题为“Gaze-Based Object Placement within a Virtual Reality Environment”的美国专利申请序列号14/697,109、2015年04月27日提交的标题为“Use of SurfaceReconstruction Data to Identify Real World Floor”的美国专利申请序列号14/697,227、2015年05月27日提交的标题为“Smart Transparency For Holographic Objects”的美国专利申请序列号14/722,942,以及2015年05月27日提交的标题为“Multi-User GazeProjection Using Head Mounted Display Devices”的美国专利申请序列号14/723,065中找到。
后期重新投影
生成真实的增强现实、混合现实或虚拟现实环境的一个问题涉及向HMD的终端用户显示与HMD的特定姿势相对应的世界锁定虚拟对象的图像的延时或时间量。例如,如果在终端用户的头部从特定姿势转开的时间和基于特定姿势显示虚拟对象的图像的时间之间经过了太多时间,那么虚拟对象将看起来偏离其在增强现实环境中的预期位置(即,图像可能看起来未与预期的真实世界位置或对象对齐)。因此,包括全息透镜的HMD还可以包括用于以大于呈现帧的速率的帧速率生成并显示与增强现实(AR)环境内的一个或多个虚拟对象相关联的图像并且用于改进虚拟对象稳定性的技术。所显示的图像可以包括预呈现场景的后期图形调整(即,转发以呈现帧的速率呈现的预测场景),以便包含更高频率的姿势估计。呈现帧的速率可以对应于呈现与头戴式显示设备(HMD)的姿势相关联的图像的最小时间。HMD可以确定与HMD的未来定位和定向相关联的预测姿势(例如,HMD在将来10ms或20ms的预测姿势),基于预测姿势生成预呈现图像,在生成预呈现图像之后或者与生成预呈现图像同时确定与HMD相关联的更新的姿势,基于更新的姿势和预呈现图像生成更新的图像,并在HMD上显示更新的图像。可以经由预呈现图像的单应变换和/或像素偏移调整来生成更新的图像。在一些情况下,更新的图像可以由显示器内的电路装置生成。
可以在确定预测姿势之前,立即基于HMD的当前定位和定向以及HMD的加速度和速度来确定预测姿势(例如,通过基于在确定预测姿势之前5ms或10ms的HMD的移动来外推预测姿势)。可以基于以比呈现帧的速率更高的频率提供给姿势追踪器的更新的姿势的信息来确定更新的姿势。可以使用低延时惯性测量单元(IMU)或IMU和基于相机的姿势追踪的组合来生成更新的姿势信息。更新的图像可以包括图像旋转、平移、调整大小(例如,拉伸或收缩)、移位或倾斜预呈现图像的至少一部分,以便针对预测姿势和更新的姿势之间的差异进行校正(例如,在生成预呈现图像时补偿不正确的姿势预测)。可以经由预呈现图像的单应变换来生成更新的图像。在一些情况下,单应变换可以包括仿射变换。可以使用像素偏移调整,或者使用单应变换和像素偏移调整的组合来生成更新的图像。在一些情况下,可以从核心呈现流水线的下游生成单应变换和/或像素偏移调整(例如,使用与显示器集成的控制器或处理器)。在其他情况下,可以使用包含移位寄存器或用于允许在显示器的像素阵列内移位像素值(例如,类似于电荷耦合器件的操作)的其他电路装置的显示器来执行像素偏移调整。
可以使用变化的计算复杂度的各种图像重新投影技术来生成包括对前向预测的呈现图像的后期图形调整的更新的图像。图像重新投影技术可以包括每个像素重新投影(例如,其中基于更新的姿势重新投影呈现图像的每个像素)、多平面单应性(例如,其中与3D场景内的多个平面相关联的多个呈现图像被用来生成复合更新的图像)、单平面单应性(例如,其中与3D场景内的单个平面相关联的单个呈现图像被用来生成更新的图像)、仿射单应性和基于像素偏移的调整。可以基于HMD的终端用户在特定时间段内关注哪些虚拟对象来确定3D场景内的2D平面(或一个或多个2D平面的集合)。另外,眼睛追踪可以被用来确定特定时间段内(例如,在之前50ms或500ms内)最频繁查看的虚拟对象。在单平面的情况下,可以基于特定时间段内最频繁查看的虚拟对象的深度来选择单个平面(即,可以基于最频繁查看的虚拟对象在增强现实环境内的位置来设置单个平面)。在多平面的情况下,可以基于与多个平面的邻近度将增强现实环境内的虚拟对象分割成多个组;例如,如果近平面是与第一虚拟对象最接近的平面,则第一虚拟对象可以被映射到近平面,并且如果远平面是与第二虚拟对象最接近的平面,则第二虚拟对象可以被映射到远平面。然后可以生成包括基于近平面的第一虚拟对象的第一呈现图像,并且可以生成包括基于远平面的第二虚拟对象的第二呈现图像。
另外,可以对预呈现图像的不同部分执行不同的图形调整,以便包含更高频率的姿势估计。例如,与在第一时间点的HMD的第一姿势相关联的第一单应变换可以被应用于预呈现图像的第一部分(例如,预呈现图像的上部),并且与在第一时间点之后的第二时间点的HMD的第二姿势相关联的第二单应变换可以被应用于与该第一部分不同的预呈现图像的第二部分(例如,预呈现图像的下部)。在扫描显示或渐进扫描显示的情况下,第一单应变换可以被应用于与第一组扫描线相关联的像素,第二单应变换可以被应用于与第一组扫描线不同的第二组扫描线相关联的像素。第一单应变换可以被应用于单个第一扫描线,并且第二单应变换可以被应用于单个第二扫描线(即,可以基于每个扫描线应用单应变换)。
关于LSR的附加细节可以在2016年11月16日公布的标题为“Late StageReprojection”的美国专利号9,514,571和2016年08月03日提交的标题为“Late StageReprojection”的美国专利申请号15/227,453中找到。
在现有系统中,LSR调整由相对较小的滚动缓冲器支持。结果,在LSR调整过程中的任何给定时间,只有在特定时间点碰巧在缓冲器中的那部分图像数据才可用于执行LSR调整,这可能会显著限制LSR调整可实行的范围。另外,由于存储器大小和功耗限制,之前的解决方案仅支持颜色分离的显示器。
改进的高速缓存方法和系统
一般来说,将输入图像数据的帧(由GPU生成并保存在系统(DRAM)存储器中)变换为按照光栅顺序正确格式化的输出图像数据以用于在输出显示器上呈现所需的存储器的量一般是LSR调整的复杂度、设备发送呈现图像的帧速率以及输出显示呈现流水线的速度的函数。通过还考虑在给定的时间间隔期间普通人的头部可以行进的移动(即,平移和/或旋转)的量,可以计算给定显示系统可以被设计为支持的预定的最大LSR调整。然后,基于这些约束,可以优化输出显示呈现流水线的组件,以便减小芯片大小以及带宽和功耗要求。本文所公开和所要求保护的技术特别涉及提供用于实现该目的改进的高速缓存结构和的方法。以下说明性示例将主要聚焦在由用户旋转/倾斜头部/HMD引起的LSR调整,但是本领域技术人员将容易理解,该技术可以适于考虑任何一种或多种类型头部移动的任何组合,包括旋转、平移和/或放大,以计算给定显示系统可以被设计为支持的预定的最大LSR调整。
对于大小和功率要求,高速缓存应当尽可能小,同时仍然足够大以容纳足够数目的输入图像数据的线以允许有效且及时地处理图像数据。可以适当地调整高速缓存的大小,使得每个呈现的输入图像数据的线仅被获取一次,从而减少DRAM的带宽和功耗,并且输入图像数据的每条线可以被保留在高速缓存中直到它不再被需要。高速缓存可以在需要数据之前预取数据(零延时)。高速缓存也应当足够大,以便每个预取周期取回足够数目的输入图像数据的线,以便基于预定的最大LSR调整,使执行LSR调整所需的输入图像数据的所有线都存在于高速缓存中。并且高速缓存可以在不再需要数据时自动驱逐数据。
利用该高速缓存结构和方法,不需要等待GPU来完成将完整图像帧保存到DRAM。而是,只要已经将支持预定的最大LSR调整所必需的足够数目的输入图像数据的线写入DRAM,就可以开始初始预取周期。还可以基于高速缓存的大小、在每个预取周期中取回的输入图像数据的量以及输出显示图像呈现流水线的总速度来优化连续预取周期之间的时间。还可以按照由LSR模块确定的构造显示图像所需的顺序来预取输入图像数据的线。
输入图像数据还按照特定顺序被读入并定位在高速缓存内。一般,输入图像数据可以按照由LSR模块确定的需要的顺序被写入到高速缓存中,以构造输出显示图像。输入图像数据在高速缓存内的这种相对定位还提供数据的可预测和有序行进以呈现输出显示图像。
现在将在以下示例的上下文中下进一步解释前述概念。应当理解,以下实施例是简化的,并且是为了说明前述概念而提供的,并不旨在限制所附权利要求的范围。
接下来参考图4,其图示了HMD的图像呈现子系统的某些相关部分的功能框图。系统400可以包括图形处理单元(GPU)402、系统存储器(DRAM)404和全息处理单元(HPU)406。HPU 406可以包括控制器408、LSR子系统410和高速缓存/缓冲器412。HMD还可以配备有定位追踪子系统414(其能够追踪具有六个自由度的HMD的定位)和显示器416(诸如HMD的透视增强现实显示器)。
GPU 402生成用于输出到显示器的图像帧。如上面所讨论的,这些图像可以包括文本、全息对象和其他可视元素,它们可以被投影到显示器416上并且当用户通过HMD显示器416查看时,可以将其感知为被叠加到真实世界环境中。利用当前的技术,GPU可以呈现帧图像并以每秒大约30帧到60帧的速度将它们保存到DRAM 406。如示意性说明的,图像数据可以用分离的红色帧、绿色帧和蓝色帧进行颜色分离。分配给输入图像数据的存储器的量可以变化并且可以取决于图像帧的分辨率,但通常足以在重写先前保存的图像帧之前保持两个图像帧。因此,在每秒60帧的情况下,特定图像帧在被重写之前可以仅驻留在DRAM 406中大约33毫秒。如果HMD保持完全静止(例如,没有平移和/或旋转,因此不需要LSR调整),则由GPU生成的图像数据(有时在下文中被称为“GPU图像”或“输入图像数据”)可以经由高速缓存/缓冲器412从DRAM中读出,并在显示器416上呈现,而无需任何图像变换或调整。
每次GPU 402开始呈现特定GPU图像帧时,该图像帧是基于在GPU生成的图像帧实际投影到HMD显示器416时,对HMD预期将处于的姿势的第一预测。然而,呈现过程花费时间并且将其发送到显示器花费时间,这在图像处理流水线中引入了一定量的延时。基于当前技术,该延时可以是大约60毫秒的量级。并且,如上面所讨论的,由于涉及延时的显示图像呈现流水线,HMD移动到与第一预测姿势不同的姿势并不罕见。在那种情况下,LSR子系统410使用第一预测姿势和更新的姿势预测,并执行重新投影GPU图像所需的所有计算,以便对其进行校正以符合更新的姿势预测的新视角。简单地说,LSR子系统可以使用矩阵变换(诸如单应变换)来创建调整矩阵,该调整矩阵在逐像素的基础上(并且针对每个颜色分离的帧)将调整的输出或显示图像的每个像素的位置映射到原始GPU或输入图像的对应像素的位置。并且本文公开的高速缓存结构和方法被设计为从DRAM404读出原始GPU输入图像数据并按照光栅扫描顺序将其写出以用于以特别有效的方式在HMD显示器416上呈现。
参考图5和图6。图5示意性地图示了由GPU 402产生的图像帧。在该示例中,GPU图像502被图示为包括图像数据的16条线(其被示意性地图示为行A至行P),并且图像数据的每条线可以包括多个像素。构成特定图像帧的线和像素的特定数目将取决于图像的纵横比和分辨率。对于以下讨论,GPU图像502的像素在u-v坐标参考系中被图示,其中u坐标对应于图像帧内的特定像素或像素的列的水平定位,并且v坐标对应于图像帧内的特定像素或像素的行的垂直定位。GPU图像502可以由GPU 402逐线呈现,如图5中的虚线示意性所示的那样。同样,如果不需要LSR调整,则可以简单地经由高速缓存/缓冲器412从DRAM 404读出GPU图像数据502,并且将其呈现在显示器416上,因为将图像呈现在显示器416上所需的数据的光栅顺序将直接对应于GPU图像数据502的顺序。
另一方面,图6示意性地图示了在GPU 402开始呈现GPU图像502之后,定位追踪子系统414检测到与GPU图像502相关联的预测姿势已经改变并且因此需要LSR调整的情况。图6在说明性示例中示意性地图示了GPU图像502和经校正的输出图像504,在该示例中定位追踪子系统检测到更新的预测姿势HMD从原始预测姿势在顺时针方向上旋转角度α。例如,当HMD的用户将他们的头部向右倾斜角度α时,用户不会期望他们的视野内的全息对象随着他们的头部的旋转而旋转,而是会期望全息对象保持他们相对于真实世界环境的位置和定向。因此,必须校正GPU图像502以考虑这些差异以构造对应于更新的预测姿势的定位的经校正的输出图像。
在图6中,GPU图像502被叠加在输出图像504的示意性表示上。对于以下讨论,输出图像504的像素在xy坐标参考系中被图示,其中x坐标对应于图像帧内的特定像素或像素的列的水平定位,并且y坐标对应于输出图像帧内的特定像素或像素的行的垂直定位。再一次,LSR子系统406执行构造适当的显示或输出图像504所需的所有计算,并生成将输出图像504的每个像素映射到GPU图像502的适当的和对应的像素的调整矩阵。
在所图示的示例中,可以看出,为了呈现显示图像504,所需的第一像素实际上将来自输入图像502的第五行(行E)。然后,随着处理继续(如由图6中的点虚线箭头示意性地表示的那样),为了完成显示图像504的第一行,将需要来自输入图像502的第四行(行D)、然后来自第三行(行C)、然后来自第二行(行B)、最后来自第一行(行A)的像素。根据本文公开的高速缓存结构和方法,从DRAM404取回输入图像数据502并将其写入到高速缓存/缓冲器412中的方式以避免或至少最小化向输出图像呈现流水线添加任何附加的延时的方式来设计。
本文所要求保护的系统和方法依赖于预测性的预取模型和机制,使得在开始执行LSR调整之前从DRAM 404预取输入图像数据502的部分。例如,图7A示意性地并且仅出于说明的目的图示了具有标记为C1至C9的9条线的高速缓存412。可以根据上面讨论的原理优化高速缓存412的实际大小。在一个实施例中,每个预取操作可以被设计为从DRAM 404取回输入数据的32行,其包括4个数据的条带(swath),每个条带包括8个行,并且可以调整高速缓存412的大小以适应一个或多个预取操作。
继续该示例,图7A也示意性地并且仅出于说明的目的图示了对来自DRAM 404的输入图像数据502的初始预取可以包括输入图像数据502的9条线(即,行A至行I),包括构造输出图像504的第一条线(即,输出图像504的行1)所需的前五条线的数据(即,输入图像502的行A到行E)。在初始预取操作和/或任何后续预取周期期间取回的输入数据的线的实际数目可以基于构造输出图像504的速度来优化(即,在预取周期之间保持在执行之前所需的线的数目)。
另外,通过按照构造输出图像504所需的顺序将输入图像数据502写入到高速缓存412中,可以进一步提前构造输出图像504的初始执行的开始。再次参考图7A,在所说明的示例中,输入图像数据的行E将首先被写入到高速缓存中,如在702处所指示的,然后是在704处指示的行D,以此类推,直到在特定预取周期中所取回的所有行都被写入到高速缓存412中。对于初始预取操作,构造输出图像504所需的输入图像数据502的第一行(例如,行E)可以被放置在高速缓存412的“中间”行处或附近(例如,行C5)。如图7A中704到718处进一步所图示的,在初始预取操作中取回的输入图像数据的其他行可以根据它们的相对v值而被放置在高速缓存412中,其中具有更低v值的行以v值递减的顺序被放置在行E上方,具有更高v值的行以v值递增的顺序被放置在行E下方。
在构造显示图像504的第一条线所需的输入图像数据502的所有行已被写入到高速缓存412中时,就可以开始执行将输出图像504呈现到输出缓冲器或显示器416。另外,以上述方式预取输入图像数据502并将其写入到高速缓存412中可以帮助在高速缓存412中重新排序和组织输入图像数据502,以便产生图像数据在高速缓存中的可预测且相对简单的行进,以按照光栅扫描顺序构造输出图像504,所有这些都如在图8中示意性地图示的那样。例如,一系列点虚线箭头802示意性地图示了输入图像数据504在高速缓存412中的行进以便构造输出图像504的第一条线。类似地,一系列点虚线箭头804示意性地图示了输入图像数据504在高速缓存412中的行进,以便构造输出图像504的第二条线,等等。
如图6中可以看出,在已经生成了输出图像504的第二条线并且处理已经移动到输出图像504的第三条线时,输出图像504将不再需要输入图像502的行A并且可以将其从高速缓存412驱逐。在高速缓存412大小适当的情况下,从高速缓存412驱逐仅在不再需要输入图像数据的特定行之后发生,但是这在随后的预取操作期间取回附加输入图像数据并将其写入到高速缓存412中时自动发生。
为了处理这种情况,输入图像数据的v值可以被用作高速缓存412中的索引,使得高速缓存412中存在的行按照具有最低v值的行首先被重写的顺序被重写。这在图7B中被示意性地图示。仅出于说明的目的,图7B假设在随后的预取操作中已从DRAM 404取回图像数据502的附加的4行,并且已经按照由附图标记720到726表示的顺序将其写入到高速缓存412中。换言之,此时在高速缓存中具有最低v值(参考图7A)的行A(图7A)首先被重写并且是被输入图像502的行J重写,因为行J是在后续预取操作中从DRAM 404中取回的输入图像数据的行,构造输出图像504首先需要的是输入图像数据的行(与在后续预取周期期间取回的附加行相比)。
可以在输入图像和显示图像都可以从上到下行进的前提下建立该高速缓存索引和替换策略,这有助于简化索引和替换策略。另外,可以将高速缓存划分为列和区块(tile),并且可以对上述过程进行划分,并且可以分离地在数据的各个区块上执行上述过程。例如,基于输入图像数据的u坐标,可以分离地在每列内执行替换。类似地,基于输入图像数据的u坐标和v坐标,可以分离地在数据的各个区块上执行替换。
使用包括全息处理单元(HPU)的系统的上下文来描述上面讨论的实施例。然而,应当理解并且对于本领域技术人员来说明显的是,上面讨论的原理可以容易地扩展到其他非HPU实现,包括但不限于SOC实现。
另外,虽然上述实施例考虑逐行地预取和处理图像数据,但是应当理解并且对于本领域技术人员来说明显的是,上面讨论的原理可以容易地扩展到提供一次不到一整行的图像数据的获取和处理。例如,可以使用相同的原理来基于期望的像素的分组或有效粒度的图像数据的其他分组来获取和处理图像数据。
因此,可以看出,上面公开的改进的高速缓存结构和方法被最佳地调整大小以支持预定范围的LSR调整,并且其中图像数据被智能地从DRAM读出,并以消除从DRAM重新获取输入图像数据并最小化DRAM带宽和功率的方式被高速缓存。高速缓存结构被最佳地调整大小以支持预定范围的LSR调整,并且被管理成使得:高速缓存/缓冲器可以只获取输入图像数据的每条线一次以减少输入带宽;高速缓存可以保持足够构造输出图像的多条线(但仍然比完整图像少得多);高速缓存可以在数据被需要之前预取数据,以便它不会给图像处理流水线增加任何附加延时;并且只有当不再需要该数据来构造输出图像时,高速缓存才能驱逐输入图像数据,但是当不再需要时,高速缓存可以自动驱逐输入图像数据。输入图像数据最初可以按照开始呈现输出图像所需的顺序被写入到高速缓存中,并且输入图像数据可以按照使得可预测输出图像数据从高速缓存读出的顺序的方式被写入到高速缓存中并进行组织。另外,方法可以由包括一个或多个处理器和诸如计算机存储器的计算机可读介质的计算机系统来实践。特别地,计算机存储器可以存储计算机可执行指令,该计算机可执行指令在由一个或多个处理器执行时使得执行各种功能(诸如实施例中记载的动作)。
如下面更详细讨论的,本发明的实施例可以包括或利用包括计算机硬件的专用或通用计算机。本发明范围内的实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理计算机可读介质和其他计算机可读介质。这种计算机可读介质可以是由通用或专用计算机系统可以访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。因此,通过示例而非限制,本发明的实施例可以包括至少两个截然不同种类的计算机可读介质:物理计算机可读存储介质和传输计算机可读介质。
物理计算机可读存储介质包括:RAM、ROM、EEPROM、CD-ROM或其他光盘存储装置(诸如CD、DVD等)、磁盘存储装置或其他磁存储设备、或者如下的任何其他介质,其可以被用来以计算机可执行指令或数据结构的形式存储期望的程序代码部件,并且其可以由通用或专用计算机访问。
“网络”被定义为能够在计算机系统和/或模块和/或其他电子设备之间运输电子数据的一个或多个数据链路。当通过网络或其他通信连接(硬连线、无线、或者硬连线或无线的组合)向计算机传递或提供信息时,计算机恰当地将连接视为传输介质。传输介质可以包括网络和/或数据链路,其可以被用来以计算机可执行指令或数据结构的形式承载期望的程序代码部件,并且其可以由通用或专用计算机访问。上述的组合也被包括在计算机可读介质的范围内。
另外,一经到达各种计算机系统组件,计算机可执行指令或数据结构形式的程序代码部件就可以自动地从传输计算机可读介质被传递到物理计算机可读存储介质(或反之亦然)。例如,通过网络或数据链路接收的计算机可执行指令或数据结构可以被缓冲在网络接口模块(例如,“NIC”)内的RAM中,并且然后最终被传递到计算机系统RAM和/或计算机系统处的较少易失性的计算机可读物理存储介质。因此,计算机可读物理存储介质可以被包括在也(或甚至主要地)利用传输介质的计算机系统组件中。
计算机可执行指令包括例如使通用计算机、专用计算机、或专用处理设备执行特定功能或功能组的指令和数据。计算机可执行指令可以是例如二进制文件、中间格式指令(诸如汇编语言)、或者甚至是源代码。尽管已经用特定于结构特征和/或方法动作的语言描述了主题内容,但是应当理解,所附权利要求中限定的主题内容不必限于所描述的特征或上面描述的动作。而是,所描述的特征和动作被公开作为实现权利要求的示例形式。
本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中被实践,计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器或可编程的消费者电子产品、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等。本发明还可以在分布式系统环境中被实践,其中通过网络来链接(通过硬连线数据链路、无线数据链路、或者通过硬连线和无线数据链路的组合)的本地计算机系统和远程计算机系统两者都执行任务。在分布式系统环境中,程序模块可以位于本地存储器存储设备和远程存储器存储设备两者中。
备选地或另外地,本文描述的功能性可以至少部分地由一个或多个硬件逻辑组件来执行。例如而非限制,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、程序专用集成电路(ASIC)、程序专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。
在不脱离本发明的精神或特征的情况下,本发明可以以其他特定形式被实施。所描述的实施例在所有方面都应被视为仅是说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是前面的描述指示。在权利要求的含义和等同范围内的所有变化都包含在其范围内。
Claims (13)
1.一种用于高速缓存图像数据的改进的方法,所述图像数据旨在用于与头戴式增强现实、混合现实或虚拟现实显示系统(HMD)一起使用,所述HMD具有图形处理单元(GPU)、带有片上高速缓存的全息处理单元(HPU)、系统存储器和显示器,所述GPU生成图像,所述图像可以包括可以在所述显示器上被显示的文本、全息对象和其他可视元素,所述系统存储器用于存储GPU图像,并且所述HPU被配置成执行后期调整,以针对在图像呈现过程期间能够发生的所述HMD的移动来校正GPU图像,并且所述高速缓存用于基于GPU生成的所述图像和所述后期调整来构造输出图像,并且所述HPU生成后期调整矩阵,所述后期调整矩阵将经后期调整的所述输出图像的每个像素映射到所述GPU图像的对应像素,所述方法包括以下动作,所述动作用于:
执行对来自系统存储器的所述GPU图像的一行或多行的初始预取,所述一行或多行按照构造所述输出图像所需的顺序被选择;
基于所述后期调整矩阵,按照构造所述输出图像所需的所述顺序将所述GPU图像的经初始预取的所述一行或多行写入到所述高速缓存中;以及
按照所述输出图像的光栅扫描顺序并根据所述调整矩阵,使所述GPU图像的经初始预取的所述一行或多行行进到所述高速缓存中,并且将所述输出图像输出。
2.根据权利要求1所述的方法,其中所述高速缓存的大小被选择以支持预定范围的后期调整。
3.根据权利要求2所述的方法,其中在用于执行初始预取操作的动作中,所述一行或多行是足够数目的行,使得构造所述输出图像的第一部分所需的所有行都存在于所述高速缓存中。
4.根据权利要求3所述的方法,其中在用于写入经初始预取的所述一行或多行的动作中,构造所述输出图像所需的第一行被放置在所述高速缓存的中间处或其附近,并且所述一行或多行中的其他行中的每行基于它们在所述GPU图像中的相对定位而被放置在所述第一行的上方或下方。
5.根据权利要求4所述的方法,还包括用于在所述显示器上呈现所述输出图像的动作。
6.根据权利要求5所述的方法,还包括:
根据需要,执行附加的预取操作以取回所述GPU图像的一个或多个附加行,基于所述后期调整矩阵,按照构造所述输出图像所需的所述顺序,所述GPU图像的所述一个或多个附加行被选择并被写入到所述高速缓存中。
7.根据权利要求6所述的方法,还包括用于在不再需要所述GPU图像的每行来构造所述输出图像时,从所述高速缓存中自动驱逐所述GPU图像的每行的动作。
8.根据权利要求7所述的方法,还包括在行从所述高速缓存中被驱逐之后执行附加的预取操作。
9.根据权利要求7所述的方法,其中用于自动驱逐的动作包括:利用在随后的预取操作期间被取回的GPU生成的所述图像的一个或多个附加行来重写已经在所述高速缓存中的所述GPU图像的一行或多行。
10.根据权利要求9所述的方法,其中所述GPU图像的每行具有垂直坐标和值,所述垂直坐标和值基于其在所述GPU图像内相对于所述GPU图像中的其他行的定位,并且其中所述高速缓存中的具有最低垂直坐标值的任何现有行被首先重写。
11.根据权利要求10所述的方法,其中在所述初始预取操作和任何后续预取操作期间被预取的所述GPU图像的行的数目等于36。
12.根据权利要求1所述的方法,其中图像数据的所述一行或多行利用预定分组的像素或其他有效宽度粒度来替换。
13.一种用于作为头戴式增强现实、混合现实或虚拟现实显示系统(HMD)的一部分使用的系统,所述HMD具有图形处理单元(GPU)、带有片上高速缓存的全息处理单元(HPU)、系统存储器和显示器,所述GPU生成图像,所述图像可以包括可以在所述显示器上被显示的文本、全息对象和其他可视元素,所述系统存储器用于存储作为压缩的图像数据的GPU图像,并且所述HPU被配置成执行后期调整,以针对在图像呈现过程期间能够发生的所述HMD的移动来校正GPU图像,并且所述高速缓存用于基于GPU生成的所述图像和所述后期调整来构造输出图像,并且所述HPU生成后期调整矩阵,所述后期调整矩阵将经后期调整的所述输出图像的每个像素映射到所述GPU图像的对应像素,所述系统包括:
一个或多个处理器;以及
一个或多个计算机可读介质,存储有在其上的指令,所述指令由所述一个或多个处理器可执行,以将所述系统配置成至少执行根据权利要求1-12中任一项所述的方法的动作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/415,569 | 2017-01-25 | ||
US15/415,569 US10242654B2 (en) | 2017-01-25 | 2017-01-25 | No miss cache structure for real-time image transformations |
PCT/US2018/013039 WO2018140230A1 (en) | 2017-01-25 | 2018-01-10 | No miss cache structure for real-time image transformations |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110249317A true CN110249317A (zh) | 2019-09-17 |
CN110249317B CN110249317B (zh) | 2023-05-02 |
Family
ID=61094598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880008052.XA Active CN110249317B (zh) | 2017-01-25 | 2018-01-10 | 用于实时图像变换的无未命中高速缓存结构 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10242654B2 (zh) |
EP (1) | EP3574408B1 (zh) |
CN (1) | CN110249317B (zh) |
WO (1) | WO2018140230A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112286475A (zh) * | 2020-10-30 | 2021-01-29 | 海信电子科技(武汉)有限公司 | 文本显示方法及显示设备 |
CN115176285A (zh) * | 2020-02-26 | 2022-10-11 | 奇跃公司 | 利用缓冲的交叉现实系统用于定位精度 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190036992A1 (en) * | 2017-06-09 | 2019-01-31 | Charles D. Stewart | Surgical communications systems and related methods |
US10762691B2 (en) * | 2017-09-08 | 2020-09-01 | Microsoft Technology Licensing, Llc | Techniques for compensating variable display device latency in image display |
US10559276B2 (en) | 2018-02-03 | 2020-02-11 | Facebook Technologies, Llc | Apparatus, system, and method for mitigating motion-to-photon latency in head-mounted displays |
US10706813B1 (en) * | 2018-02-03 | 2020-07-07 | Facebook Technologies, Llc | Apparatus, system, and method for mitigating motion-to-photon latency in head-mounted displays |
US10678325B2 (en) | 2018-05-22 | 2020-06-09 | Facebook Technologies, Llc | Apparatus, system, and method for accelerating positional tracking of head-mounted displays |
US10997884B2 (en) | 2018-10-30 | 2021-05-04 | Nvidia Corporation | Reducing video image defects by adjusting frame buffer processes |
US10904516B2 (en) * | 2019-01-14 | 2021-01-26 | Valve Corporation | Counterrotation of display panels and/or virtual cameras in a HMD |
US11095855B2 (en) * | 2020-01-16 | 2021-08-17 | Microsoft Technology Licensing, Llc | Remote collaborations with volumetric space indications |
KR20220093985A (ko) | 2020-12-28 | 2022-07-05 | 삼성전자주식회사 | 이미지 지연 보정 방법 및 이를 이용한 장치 |
KR20220156331A (ko) | 2021-05-18 | 2022-11-25 | 삼성전자주식회사 | 이미지 지연을 보정하기 위한 전자 장치 및 방법 |
US20230128288A1 (en) * | 2021-10-27 | 2023-04-27 | Meta Platforms Technologies, Llc | Compositor layer extrapolation |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101662690A (zh) * | 2008-08-25 | 2010-03-03 | 索尼株式会社 | 图像处理设备、成像设备、图像处理方法及程序 |
US20120327178A1 (en) * | 2011-06-24 | 2012-12-27 | At&T Intellectual Property I, Lp | Apparatus and method for presenting three dimensional objects with telepresence |
US20150029218A1 (en) * | 2013-07-25 | 2015-01-29 | Oliver Michael Christian Williams | Late stage reprojection |
CN105009039A (zh) * | 2012-11-30 | 2015-10-28 | 微软技术许可有限责任公司 | 使用imu的直接全息图操纵 |
US20150339234A1 (en) * | 2014-05-26 | 2015-11-26 | Texas Instruments Incorporated | System and method for managing cache |
US20160136816A1 (en) * | 2014-11-14 | 2016-05-19 | James Charles Pistorino | Sorting apparatus and method |
US20160189429A1 (en) * | 2014-12-30 | 2016-06-30 | Sony Computer Entertainment Inc. | Scanning display system in head-mounted display for virtual reality |
Family Cites Families (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5864342A (en) | 1995-08-04 | 1999-01-26 | Microsoft Corporation | Method and system for rendering graphical objects to image chunks |
US6005582A (en) | 1995-08-04 | 1999-12-21 | Microsoft Corporation | Method and system for texture mapping images with anisotropic filtering |
US5933125A (en) | 1995-11-27 | 1999-08-03 | Cae Electronics, Ltd. | Method and apparatus for reducing instability in the display of a virtual environment |
US6111582A (en) | 1996-12-20 | 2000-08-29 | Jenkins; Barry L. | System and method of image generation and encoding using primitive reprojection |
US6057847A (en) | 1996-12-20 | 2000-05-02 | Jenkins; Barry | System and method of image generation and encoding using primitive reprojection |
JP3356663B2 (ja) * | 1997-10-22 | 2002-12-16 | 松下電器産業株式会社 | 画像符号化装置、画像符号化方法および画像符号化プログラムを記録した記録媒体 |
US6456340B1 (en) | 1998-08-12 | 2002-09-24 | Pixonics, Llc | Apparatus and method for performing image transforms in a digital display system |
US6369830B1 (en) | 1999-05-10 | 2002-04-09 | Apple Computer, Inc. | Rendering translucent layers in a display system |
US7071935B1 (en) | 1999-06-14 | 2006-07-04 | Sun Microsystems, Inc. | Graphics system with just-in-time decompression of compressed graphics data |
US6901169B2 (en) | 2001-02-01 | 2005-05-31 | At & T Corp. | Method and system for classifying image elements |
US7324695B2 (en) | 2002-03-18 | 2008-01-29 | Seimens Medical Solutions Usa, Inc. | Prioritized image visualization from scalable compressed data |
US7199793B2 (en) | 2002-05-21 | 2007-04-03 | Mok3, Inc. | Image-based modeling and photo editing |
US7401920B1 (en) | 2003-05-20 | 2008-07-22 | Elbit Systems Ltd. | Head mounted eye tracking and display system |
WO2005039185A1 (en) | 2003-10-06 | 2005-04-28 | Mindego, Inc. | System and method for creating and executing rich applications on multimedia terminals |
US7369134B2 (en) | 2003-12-29 | 2008-05-06 | Anark Corporation | Methods and systems for multimedia memory management |
JP4861338B2 (ja) | 2005-02-15 | 2012-01-25 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 読み出し機能及びフェッチ機能を分けることによるデータ処理装置のメモリユニットの性能向上 |
US9117309B1 (en) | 2005-12-19 | 2015-08-25 | Nvidia Corporation | Method and system for rendering polygons with a bounding box in a graphics processor unit |
US20090016333A1 (en) | 2006-06-14 | 2009-01-15 | Derek Wang | Content-based adaptive jitter handling |
US9019300B2 (en) | 2006-08-04 | 2015-04-28 | Apple Inc. | Framework for graphics animation and compositing operations |
US20080158254A1 (en) | 2006-12-29 | 2008-07-03 | Hong Jiang | Using supplementary information of bounding boxes in multi-layer video composition |
US7982733B2 (en) | 2007-01-05 | 2011-07-19 | Qualcomm Incorporated | Rendering 3D video images on a stereo-enabled display |
JP4857196B2 (ja) | 2007-05-31 | 2012-01-18 | キヤノン株式会社 | 頭部装着型表示装置、及びその制御方法 |
US9648325B2 (en) | 2007-06-30 | 2017-05-09 | Microsoft Technology Licensing, Llc | Video decoding implementations for a graphics processing unit |
US9665951B2 (en) | 2007-12-20 | 2017-05-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Unified compression/decompression graphics architecture |
US9355493B2 (en) | 2007-12-31 | 2016-05-31 | Advanced Micro Devices, Inc. | Device and method for compositing video planes |
EP2300991B1 (en) | 2008-07-24 | 2012-11-14 | Thomson Licensing | Image processing device, method, and system |
US8106924B2 (en) | 2008-07-31 | 2012-01-31 | Stmicroelectronics S.R.L. | Method and system for video rendering, computer program product therefor |
WO2011038275A1 (en) | 2009-09-25 | 2011-03-31 | Avazap Inc. | Frameless video system |
US8416263B2 (en) | 2010-03-08 | 2013-04-09 | Empire Technology Development, Llc | Alignment of objects in augmented reality |
US9113130B2 (en) | 2012-02-06 | 2015-08-18 | Legend3D, Inc. | Multi-stage production pipeline system |
US9262950B2 (en) | 2011-04-20 | 2016-02-16 | Microsoft Technology Licensing, Llc | Augmented reality extrapolation techniques |
US9554132B2 (en) | 2011-05-31 | 2017-01-24 | Dolby Laboratories Licensing Corporation | Video compression implementing resolution tradeoffs and optimization |
US9153062B2 (en) | 2012-02-29 | 2015-10-06 | Yale University | Systems and methods for sketching and imaging |
US9098418B2 (en) | 2012-03-20 | 2015-08-04 | Apple Inc. | Coordinated prefetching based on training in hierarchically cached processors |
ES2665535T3 (es) | 2012-03-20 | 2018-04-26 | Siemens Corporation | Visualización de equipajes y desempaquetado virtual |
US8687902B2 (en) | 2012-03-29 | 2014-04-01 | Intel Corporation | System, method, and computer program product for decompression of block compressed images |
US9576397B2 (en) | 2012-09-10 | 2017-02-21 | Blackberry Limited | Reducing latency in an augmented-reality display |
WO2014160342A1 (en) | 2013-03-13 | 2014-10-02 | The University Of North Carolina At Chapel Hill | Low latency stabilization for head-worn displays |
NZ712192A (en) | 2013-03-15 | 2018-11-30 | Magic Leap Inc | Display system and method |
US9443355B2 (en) | 2013-06-28 | 2016-09-13 | Microsoft Technology Licensing, Llc | Reprojection OLED display for augmented reality experiences |
EP2833326B1 (en) | 2013-07-30 | 2016-04-06 | Dassault Systèmes | Lossless compression of a 3D mesh including transforming of the mesh to a image |
CN106105220B (zh) | 2014-01-07 | 2019-07-05 | 诺基亚技术有限公司 | 用于视频编码和解码的方法和装置 |
US10935788B2 (en) | 2014-01-24 | 2021-03-02 | Nvidia Corporation | Hybrid virtual 3D rendering approach to stereovision |
US9652893B2 (en) | 2014-04-29 | 2017-05-16 | Microsoft Technology Licensing, Llc | Stabilization plane determination based on gaze location |
US9996976B2 (en) | 2014-05-05 | 2018-06-12 | Avigilon Fortress Corporation | System and method for real-time overlay of map features onto a video feed |
US20150379772A1 (en) | 2014-06-30 | 2015-12-31 | Samsung Display Co., Ltd. | Tracking accelerator for virtual and augmented reality displays |
US20150378920A1 (en) | 2014-06-30 | 2015-12-31 | John G. Gierach | Graphics data pre-fetcher for last level caches |
US9761001B2 (en) | 2014-09-25 | 2017-09-12 | Intel Corporation | Filtered shadow mapping |
US9659410B2 (en) | 2014-10-21 | 2017-05-23 | Honeywell International Inc. | Low latency augmented reality display |
US10726560B2 (en) | 2014-10-31 | 2020-07-28 | Fyusion, Inc. | Real-time mobile device capture and generation of art-styled AR/VR content |
US9756375B2 (en) | 2015-01-22 | 2017-09-05 | Microsoft Technology Licensing, Llc | Predictive server-side rendering of scenes |
GB2534847A (en) | 2015-01-28 | 2016-08-10 | Sony Computer Entertainment Europe Ltd | Display |
US9874932B2 (en) * | 2015-04-09 | 2018-01-23 | Microsoft Technology Licensing, Llc | Avoidance of color breakup in late-stage re-projection |
US10163180B2 (en) * | 2015-04-29 | 2018-12-25 | Qualcomm Incorporated | Adaptive memory address scanning based on surface format for graphics processing |
JP6663926B2 (ja) | 2015-05-13 | 2020-03-13 | グーグル エルエルシー | DeepStereo:実世界の画像から新たなビューを予測するための学習 |
US10810797B2 (en) | 2015-05-22 | 2020-10-20 | Otoy, Inc | Augmenting AR/VR displays with image projections |
US10643381B2 (en) | 2016-01-12 | 2020-05-05 | Qualcomm Incorporated | Systems and methods for rendering multiple levels of detail |
US9978180B2 (en) | 2016-01-25 | 2018-05-22 | Microsoft Technology Licensing, Llc | Frame projection for augmented reality environments |
US10497089B2 (en) * | 2016-01-29 | 2019-12-03 | Fotonation Limited | Convolutional neural network |
US10317989B2 (en) | 2016-03-13 | 2019-06-11 | Logitech Europe S.A. | Transition between virtual and augmented reality |
US11024014B2 (en) | 2016-06-28 | 2021-06-01 | Microsoft Technology Licensing, Llc | Sharp text rendering with reprojection |
US10037626B2 (en) * | 2016-06-30 | 2018-07-31 | Microsoft Technology Licensing, Llc | Interaction with virtual objects based on determined restrictions |
US10410349B2 (en) | 2017-03-27 | 2019-09-10 | Microsoft Technology Licensing, Llc | Selective application of reprojection processing on layer sub-regions for optimizing late stage reprojection power |
US10514753B2 (en) | 2017-03-27 | 2019-12-24 | Microsoft Technology Licensing, Llc | Selectively applying reprojection processing to multi-layer scenes for optimizing late stage reprojection power |
-
2017
- 2017-01-25 US US15/415,569 patent/US10242654B2/en active Active
-
2018
- 2018-01-10 EP EP18702385.8A patent/EP3574408B1/en active Active
- 2018-01-10 CN CN201880008052.XA patent/CN110249317B/zh active Active
- 2018-01-10 WO PCT/US2018/013039 patent/WO2018140230A1/en unknown
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101662690A (zh) * | 2008-08-25 | 2010-03-03 | 索尼株式会社 | 图像处理设备、成像设备、图像处理方法及程序 |
US20120327178A1 (en) * | 2011-06-24 | 2012-12-27 | At&T Intellectual Property I, Lp | Apparatus and method for presenting three dimensional objects with telepresence |
CN105009039A (zh) * | 2012-11-30 | 2015-10-28 | 微软技术许可有限责任公司 | 使用imu的直接全息图操纵 |
US20150029218A1 (en) * | 2013-07-25 | 2015-01-29 | Oliver Michael Christian Williams | Late stage reprojection |
US20150339234A1 (en) * | 2014-05-26 | 2015-11-26 | Texas Instruments Incorporated | System and method for managing cache |
US20160136816A1 (en) * | 2014-11-14 | 2016-05-19 | James Charles Pistorino | Sorting apparatus and method |
US20160189429A1 (en) * | 2014-12-30 | 2016-06-30 | Sony Computer Entertainment Inc. | Scanning display system in head-mounted display for virtual reality |
Non-Patent Citations (1)
Title |
---|
杨靖宇等: "遥感图像渐进式传输的GPU并行加速研究", 《计算机工程与应用》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115176285A (zh) * | 2020-02-26 | 2022-10-11 | 奇跃公司 | 利用缓冲的交叉现实系统用于定位精度 |
CN115176285B (zh) * | 2020-02-26 | 2023-07-25 | 奇跃公司 | 利用缓冲的交叉现实系统用于定位精度 |
CN112286475A (zh) * | 2020-10-30 | 2021-01-29 | 海信电子科技(武汉)有限公司 | 文本显示方法及显示设备 |
CN112286475B (zh) * | 2020-10-30 | 2022-09-30 | 海信电子科技(武汉)有限公司 | 文本显示方法及显示设备 |
Also Published As
Publication number | Publication date |
---|---|
US10242654B2 (en) | 2019-03-26 |
EP3574408B1 (en) | 2021-08-04 |
WO2018140230A1 (en) | 2018-08-02 |
US20180211638A1 (en) | 2018-07-26 |
EP3574408A1 (en) | 2019-12-04 |
CN110249317B (zh) | 2023-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10241470B2 (en) | No miss cache structure for real-time image transformations with data compression | |
CN110249317A (zh) | 用于实时图像变换的无未命中高速缓存结构 | |
US11838518B2 (en) | Reprojecting holographic video to enhance streaming bandwidth/quality | |
US10672368B2 (en) | No miss cache structure for real-time image transformations with multiple LSR processing engines | |
US9892565B2 (en) | Reprojection OLED display for augmented reality experiences | |
EP3025312B1 (en) | Method for displaying pre-rendered images with late stage graphical adjustments, and corresponding mobile device | |
KR102358932B1 (ko) | 시선 위치에 기초한 안정 평면 결정 | |
CN108431739A (zh) | 用于增强现实环境的帧投影 |
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 |