Tracking pose selection for time warp in XR systems

By applying time delay offsets to camera frame capture and using SLAM-based pose estimation, the alignment of virtual content with user movements is improved, addressing latency and distortion issues in XR/VR systems, resulting in enhanced immersion and responsiveness.

WO2026123186A1PCT designated stage Publication Date: 2026-06-18QUALCOMM INC +4

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
QUALCOMM INC
Filing Date
2024-12-10
Publication Date
2026-06-18

AI Technical Summary

Technical Problem

Existing XR/VR systems face challenges in accurately aligning virtual content with user movements due to asynchronous time warp processing, leading to latency and visual distortions, despite improvements in smoothness and responsiveness.

Method used

Implementing time delay offsets in the capture of camera frame data to align with display synchronization frequency, using inertial measurement units and tracking cameras, and applying Asynchronous Time Warp (ATW) processing to modify rendered frames based on the latest pose estimation data from SLAM algorithms.

🎯Benefits of technology

Enhances the smoothness and realism of XR/VR experiences by reducing latency and visual distortions, providing a more immersive and responsive virtual environment.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024138005_18062026_PF_FP_ABST
    Figure CN2024138005_18062026_PF_FP_ABST
Patent Text Reader

Abstract

A display processing device includes a memory that receives tracking camera frame data and inertial measurement data. The display processing device determines a processing delay value necessary for integrating tracking camera frame data with inertial measurement data and calculates a time delay offset value for issuing camera frame capture commands based on the processing delay. The display processing device continuously monitors for display synchronization interrupts, and upon detecting such an interrupt, issues the capture command to generate new tracking camera frame data after the appropriate delay. The display processing device applies an Asynchronous Time Warp (ATW) function to modify previously rendered display frames to align visual updates using the latest estimated pose created from a combination of the new tracking camera frame data and new inertial measurement data.
Need to check novelty before this filing date? Find Prior Art

Description

TRACKING POSE SELECTION FOR TIME WARP IN XR SYSTEMSTECHNICAL FIELD

[0001] The disclosure relates to display processing, including display processing for eXtended Reality (XR) and Virtual Reality (VR) applications.BACKGROUND

[0002] Asynchronous Time Warp (ATW) in XR and VR devices reduces latency and improves smoothness by warping the last rendered frame based on updated head movement data. Running independently of a rendering pipeline, ATW mitigates the effects of dropped frames and delays, enhancing responsiveness and reducing motion sickness. Although ATW introduces minor visual distortion, ATW significantly improves perceived smoothness in XR / VR systems at the cost of introducing additional computational processing overhead.

[0003] SLAM (Simultaneous Localization and Mapping) is an algorithm that enables a device to map an unknown environment while simultaneously tracking its own position within that space. SLAM uses sensor inputs, such as information from cameras and Inertial Measurement Units (IMUs) , to construct real-time maps and accurately determine the location of the device within the constructed maps.

[0004] In XR and VR systems, pose estimation indicates the position and orientation of a user or device in 3D space. A pose includes translation (position) and rotation (orientation) . Accurate pose estimation enhances tracking precision, reduces latency, and improves user experience by ensuring that virtual content aligns seamlessly with user movements and generally increases the overall quality of the generated map and overall localization performance enabling immersive and responsive virtual environments.SUMMARY

[0005] In general, this disclosure describes display processing techniques, including the use of time delay offsets that affect the timing of Asynchronous Time Warp (ATW) processing to enable improved selection of camera pose data from tracking camera (s) for use with eXtended Reality (XR) and Virtual Reality (VR) . A display processing system obtains inertial measurement data from Inertial Measurement Units (IMUs) and tracking camera frame data from tracking camera (s) as inputs for a SLAM (Simultaneous Localization and Mapping) algorithm before applying Asynchronous Time Warp (ATW) processing. This processing modifies a previously rendered display frame, for example, to align a representation of an XR / VR display headset within a virtual environment corresponding to the previously rendered display frame with the location and orientation information of the XR / VR display headset within a real-world environment using a pose estimation generated by the SLAM algorithm using inertial measurement data from the IMUs and tracking camera frame data from the tracking camera (s) .

[0006] A gaming engine or an XR / VR engine may generate such a display frame for output concurrent with or prior to obtaining and processing head pose and tracking information based on IMU sensor inputs and tracking camera data. ATW processing is applied to modify the previously rendered display frame before output to reduce perceived latency between changes in the location and orientation of the XR / VR display headset in the real-world environment and the rendered frame ultimately displayed to the XR / VR display headset. This adjustment is applied to the camera capture timing to enhance the smoothness of the virtual experience by updating the previously rendered display frame (e.g., generated by a gaming or XR / VR engine) using the latest IMU and camera tracking data available to the XR / VR display headset just before the image is displayed. Improving the selection of camera tracking pose information by applying offsets to delay the capture of camera images enables configurable adjustments to the timing of camera capture timing, resulting in further improved realism and greater immersion within an XR / VR virtual environment.

[0007] In one example, a device configured for display processing includes a memory configured to receive tracking camera frame data and inertial measurement data for the device. In one example, the device includes a processing system in communication with the memory, wherein the processing system is configured to determine a processing delay value for combining the tracking camera frame data with the inertial measurement data. According to certain examples, the processing system is further configured to determine a time delay offset value for issuing a camera frame capture command based at least in part on the processing delay value. In at least one example, the processing system monitors for a display synchronization interrupt by the device. According to such examples, the processing system is configured to, upon detecting the display synchronization interrupt, issue the camera frame capture command to generate new tracking camera frame data after a delay corresponding to the time delay offset value. In another example, the processing system applies an Asynchronous Time Warp (ATW) function to modify a previously rendered display frame using the new tracking camera frame data and new inertial measurement data.

[0008] According to another example, a method of display processing includes determining a processing delay value to combine tracking camera frame data with inertial measurement data. In one example, the method includes determining a time delay offset value for issuing a camera frame capture command based at least in part on the processing delay value. According to certain examples, the method includes monitoring for a display synchronization interrupt by the device. In at least one example, the method includes, responsive to detection of the display synchronization interrupt, issuing the camera frame capture command to generate new tracking camera frame data after a delay corresponding to the time delay offset value. In another example, the method includes applying an Asynchronous Time Warp (ATW) function to modify a previously rendered display frame using the new tracking camera frame data and new inertial measurement data.

[0009] In another example, this disclosure describes a non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors to determine a processing delay value to combine tracking camera frame data with inertial measurement data. In one example, the instructions cause the processors to determine a time delay offset value for issuing a camera frame capture command based at least in part on the processing delay value. According to certain examples, the instructions cause the processors to monitor for a display synchronization interrupt by the device. In at least one example, the instructions cause the processors to, responsive to detection of the display synchronization interrupt, issue the camera frame capture command to generate new tracking camera frame data after a delay corresponding to the time delay offset value. In another example, the instructions cause the processors to apply an Asynchronous Time Warp (ATW) function to modify a previously rendered display frame using the new tracking camera frame data and new inertial measurement data.

[0010] According to yet another example, there is a device that includes means for determining a processing delay value to combine tracking camera frame data with inertial measurement data. The device further includes means for determining a time delay offset value for issuing a camera frame capture command based at least in part on the processing delay value. The device also includes means for monitoring for a display synchronization interrupt by the device. In response to detecting the display synchronization interrupt, the device includes means for issuing the camera frame capture command to generate new tracking camera frame data after a delay corresponding to the time delay offset value. Additionally, the device includes means for applying an Asynchronous Time Warp (ATW) function to modify a previously rendered display frame using the new tracking camera frame data and new inertial measurement data.

[0011] This summary is intended to provide an overview of the subject matter described in this disclosure. It is not intended to provide an exclusive or exhaustive explanation of the systems, device, and methods described in detail within the accompanying drawings and description herein. Further details of one or more examples of the disclosed technology are set forth in the accompanying drawings and in the description below. Other features, objects, and advantages of the disclosed technology will be apparent from the description, drawings, and claims.BRIEF DESCRIPTION OF DRAWINGS

[0012] FIG. 1 is a block diagram of a device configured to perform one or more of the example techniques described in this disclosure.

[0013] FIG. 2 is an example timing diagram for aligning ATW processing with peak accuracy of pose estimation data provided by SLAM processing, in accordance with aspects of this disclosure.

[0014] FIG. 3 is a flowchart illustrating an example operation of display processing in accordance with example techniques of this disclosure.

[0015] Like reference characters denote like elements throughout the description and figures.DETAILED DESCRIPTION

[0016] In general, this disclosure describes display processing techniques, including the use of time delay offsets that affect the timing of Asynchronous Time Warp (ATW) processing to enable improved selection of camera pose data from tracking camera (s) for use with eXtended Reality (XR) and Virtual Reality (VR) . A display processing system obtains inertial measurement data from Inertial Measurement Units (IMUs) and tracking camera frame data from tracking camera (s) as inputs for a SLAM (Simultaneous Localization and Mapping) algorithm before applying Asynchronous Time Warp (ATW) processing. This processing modifies a previously rendered display frame, for example, to align a representation of an XR / VR display headset within a virtual environment corresponding to the previously rendered display frame with the location and orientation information of the XR / VR display headset within a real-world environment using a pose estimation generated by the SLAM algorithm using inertial measurement data from the IMUs and tracking camera frame data from the tracking camera (s) .

[0017] A gaming engine or an XR / VR engine may generate such a display frame for output concurrent with or prior to obtaining and processing head pose and tracking information based on IMU sensor inputs and tracking camera data. ATW processing is applied to modify the previously rendered display frame before output to reduce perceived latency between changes in the location and orientation of the XR / VR display headset in the real-world environment and the rendered frame ultimately displayed to the XR / VR display headset. This adjustment is applied to the camera capture timing to enhance the smoothness of the virtual experience by updating the previously rendered display frame (e.g., generated by a gaming or XR / VR engine) using the latest IMU and camera tracking data available to the XR / VR display headset just before the image is displayed. Improving the selection of camera tracking pose information by applying offsets to delay the capture of camera images enables configurable adjustments to the timing of camera capture timing, resulting in further improved realism and greater immersion within an XR / VR virtual environment.

[0018] FIG. 1 is a block diagram of a device configured to perform one or more of the example techniques described in this disclosure. For instance, computing device 100 may be configured to determine and configure offsets that affect the timing of Asynchronous Time Warp (ATW) processing to enable improved selection of tracking pose information for use with eXtended Reality (XR) and Virtual Reality (VR) .

[0019] FIG. 1 depicts a computing device 100 having various components interconnected via bus 132, including tracking camera (s) 150 with image sensors 152A-N, IMU (Inertial Measurement Unit) 155 and sensors 156A-N, display processor (s) 140 interfaced with central processing unit (CPU) 160, local memory 120, and Graphics Processing Unit (GPU) 180. Display processor (s) 140 includes a rendering engine 141 to generate rendered frame (s) 103. In alternative examples, rendering engine 141 runs utilizing GPU 180 to generate rendered frame 103. SLAM (Simultaneous Localization and Mapping) unit 142 is enabled to apply a SLAM algorithm for use with XR / VR applications and generate pose estimation 104 data as output from a combination of camera frame pose data 153 and inertial measurement data 102. In alternative examples, SLAM unit 142 runs within a Digital Signal Processor (DSP) or within CPU 160. In other examples, SLAM unit 142 may be configured to execute external from display processor (s) 140. Asynchronous Time Warp (ATW) unit 143 is configured to apply ATW processing to update or modify a previously rendered frame 103 generated by rendering engine 141 using pose estimation 104 data provided by SLAM unit 142.

[0020] Additionally depicted are user interface 122, memory controller 124 interfaced with system memory 130, video encoder / decoder 117, and display interface 126 interfaced with display 128.

[0021] As depicted here, GPU 180 includes display controller 181, which generates Vsync interrupt 105. Display controller 181 coordinates data flow between GPU 180 and display 128 and generates display synchronization interrupt signals, also referred to as Vertical Sync (Vsync) interrupts 105. Vsync interrupts 105 indicate when rendered frame 103 should be drawn, typically aligning with the refresh rate of display 128. vertical synchronization prevents screen tearing by allowing sufficient time for each frame to display fully at one time.

[0022] Vertical display synchronization, or Vsync, is a technique in display systems-such as monitors, TVs, and XR / VR display headsets-that aligns the frame rate of GPU 180 with the refresh rate of display 128. Vertical synchronization prevents screen tearing, a visual artifact where parts of multiple frames appear on-screen simultaneously, creating a distracting split or “tear” in the image.

[0023] Displays 128 refresh at a fixed rate, commonly 60Hz, 90Hz, or 120Hz, meaning they update a set number of times per second. The frame rate of GPU 180, however, varies based on scene complexity. V-sync addresses this by making the GPU wait until the display completes a refresh cycle before generating the next rendered frame 103, such that only one full frame is presented at any given time.

[0024] GPU 180 handles rendering and graphics processing and generates display Vsync interrupts 105 to control frame rendering timing, trigger Vsync interrupt 105 signals, and synchronize rendered frames 103 with the refresh rate of display 128. Together, display controller 181 and GPU 180 maintain smooth, synchronized visual output, enhancing the user experience, particularly in gaming and real-time rendering applications, including XR / VR applications.

[0025] In the context of AR / VR devices, ATW unit 143 applies Asynchronous Time Warp (ATW) to reduce perceived latency and enhance the smoothness of the virtual experience. In VR / AR (XR) systems, where smooth, continuous visuals contribute to a more realistic and immersive environment for the user, ATW and Vsync techniques improve visual quality by enabling fluid movement and seamless transitions, even during rapid head movements.

[0026] ATW unit 143 may adjust previously rendered frames 103 based on the latest head tracking data available, updating rendered frame 103 to generate modified rendered frame (s) 199. ATW unit 143 may apply an ATW algorithm to update rendered frame 103, generating modified rendered frame (s) 199 so that the image displayed on the user’s XR / VR display headset aligns more closely with the user’s current head position. By warping the last rendered frame 103 to match recent user movements, as detected by the XR / VR display headset, ATW unit 143 reduces motion-to-photon latency and diminishes visual issues such as judder or tearing. The result of processing by ATW unit 143 and display of modified rendered frame (s) 199 is a more seamless and comfortable virtual experience for the user, with a virtual environment that is perceptibly more stable and responsive to the user’s movements, even when display processor (s) 140 of computing device 100 operate under performance constraints.

[0027] Pose estimation 104 refers to information about the position and orientation of the computing device 100, such as a user worn XR / VR display headset generated from a combination of camera frame pose data 153 and inertial measurement data 102. Pose estimation 104 may also indicate the position and orientation of controllers or other tracked objects within 3D space. For instance, pose estimation 104 may indicate to display processor (s) 140, where an XR / VR display headset is located relative to a real-world environment and the direction the object is facing at any given moment. Pose estimation 104 is utilized by an XR / VR or game type rendering engine 141 to generate (e.g., render) rendered frames 103 for output to display 128 of an XR / VR display headset and is provided as input into ATW unit 143 for ATW processing to update previously rendered frames 103 to better align with the latest position and orientation of a user-worn XR / VR display headset, creating a more immersive and responsive virtual environment.

[0028] Pose estimation 104 may be provided by, or derived from, inertial measurement data 102 provided by one or more IMU (Inertial Measurement Unit) 155 sensors 156A-N, camera frame pose data 153 provided by one or more tracking camera (s) 150 (e.g., extracted from tracking camera frame data 101 captured by tracking camera (s) 150) , or a combination thereof. SLAM unit 142 obtains, as input, each of tracking camera frame data 101 and inertial measurement data 102. Tracking camera frame data 101 is the output of one or more tracking cameras 150 and serves as one of the inputs to SLAM unit 142. Another input for SLAM unit 142 is inertial measurement data 102, which is provided by one or more IMU sensors 156A-N. SLAM unit 142 generates camera frame pose data 153 as an intermediate output upon receiving tracking camera frame data 101 for use with generating pose estimation 104. SLAM unit 142 may also generate inertial pose data 154 upon receiving inertial measurement data 102. SLAM unit 142 combines both intermediate outputs, camera frame pose data 153 and inertial pose data 154, to generate pose estimation 104 as the output from SLAM unit 142, as shown in FIG. 1.

[0029] IMU 155 sensors 156A-N track and measure the motion and orientation of computing device 100, such as an XR / VR display headset worn by a user. An IMU 155 sensor 156A-N may include accelerometers, gyroscopes to capture inertial measurement data 102 indicating acceleration and angular velocity, and may sometimes include magnetometers to capture orientation information relative to the magnetic field of the Earth. A combination of camera frame pose data 153 and inertial measurement data 102 is used to determine the position and movement of the user’s head or body within the virtual environment, allowing display processor (s) 140 to adjust the virtual experience in real-time or near real-time. By feedback regarding position, orientation, and movement, tracking camera (s) 150 and IMU 155 sensors 156A-N enable the creation of a more immersive and responsive experience in XR / VR applications.

[0030] One or more tracking camera (s) 150 may be utilized to provide tracking camera frame data 101 into SLAM unit 142 from which camera frame pose data 153 may be extracted indicating position and orientation information of an XR / VR display headset and / or controllers within a real-world three-dimensional environment. For example, tracking camera 150 may capture tracking camera frame data 101 in the form of video or still images of the surrounding environment, including markers such as infrared LEDs and natural features such as walls, furniture, and other objects in the designated space. The frame rate or frequency of tracking camera 150 is related to tracking smoothness and responsiveness to user movements, with higher frequencies of tracking camera frame data 101 capture providing more frequent and thus more refined movement data, and lower frequencies of tracking camera frame data 101 capture providing less frequent and less refined movement data. There is a trade-off, however, as higher frequency frame rates by tracking camera 150 result in greater computational overhead and may overburden display processor (s) 140 computational bandwidth if the tracking camera frame data 101 capture and processing frequency is too high.

[0031] A further complication results from the fact that tracking camera frame data 101 capture frequencies by tracking cameras 150 are unlikely to match either the display synchronization frequency of display 128 or the capture frequency of IMU 155 sensors 156A-N. Consequently, camera frame pose data 153 may not align well with the display synchronization frequency of display 128 without some adjustment by display processor (s) 140 and / or display controller 181. Inertial measurement data 102, however, is generally provided to SLAM unit 142 by IMU 155 at a high frequency or a high data rate, and therefore may not require any adjustment.

[0032] Display processor (s) 140 and / or the sub-components of display processor (s) 140, such as SLAM unit 142, may generate camera frame pose data 153 as an intermediate output through the application of algorithms to tracking camera frame data 101 to detect and identify distinct features within the captured frames, including edges, corners, or specific patterns. By analyzing captured tracking camera frame data 101 and recognized features, display processor (s) 140 may calculate the three-dimensional position and orientation of tracked objects, such as an XR / VR display headset or controllers and provide camera frame pose data 153 as output indicating the position and orientation of the tracked objects. If multiple tracking camera (s) 150 are used, the XR / VR system may triangulate the position based on perspectives from different angles by tracking camera (s) 150, which improves accuracy of camera frame pose data 153. Tracking camera (s) 150 may operate in conjunction with IMU 155 sensors 156A-N located on an XR / VR display headset embodied by computing device 100 and / or user interface 122 controllers communicably interfaced with computing device 100. Data from both tracking camera (s) 150 and IMU 155 sensors 156A-N (e.g., camera frame pose data 153 and inertial measurement data 102) may be combined to provide more accurate and stable pose estimation 104. Algorithms may also be applied to tracking camera frame data 101 captured by tracking camera (s) 150 to correct for any drift that may occur from IMU 155, aligning the virtual environment with the physical environment within which computing device 100 (e.g., an XR / VR display headset) operates.

[0033] SLAM unit 142 (e.g., Simultaneous Localization and Mapping unit 142) is configurable to apply a SLAM algorithm in XR / VR applications. SLAM unit 142 may track head poses by creating a map of the real-world environment within which the XR / VR display headset operates while simultaneously determining the position and orientation of a user-worn XR / VR display headset within that map. SLAM unit 142 may process and combine inertial measurement data 102 from IMU 155 sensors 156A-N and tracking camera frame data 101 from tracking camera (s) 150 (e.g., camera frame pose data 153 and inertial measurement data 102) to build a near-real-time, dynamic map of the virtual environment and to track the movement of the XR / VR display headset within the mapped environment. SLAM unit 142 enables the XR / VR system to accurately update a user’s viewpoint into the virtual environment through the XR / VR display headset, providing a stable and immersive experience as the user moves and changes position and orientation within the real-world environment.

[0034] SLAM unit 142 generates pose estimation 104 as output for computing device 100 (e.g., the user-worn XR / VR display headset) , which may be provided as input into ATW unit 143 for ATW processing. The more recent and up-to-date pose estimation 104 from SLAM unit 142, the greater the alignment between the XR / VR display headset in the real-world environment and a representation of the XR / VR display headset within the virtual environment. While inertial measurement data 102 provided by IMU 155 is generally provided at a high frequency, display processor (s) 140 and / or display controller 181 may apply an adjustment to the timing and issuance of camera frame capture commands sent to tracking camera (s) 150 to provide better alignment between the generation and availability of camera frame pose data 153 with the display synchronization frequency of display 128.

[0035] In a processing system for AR / VR devices, ATW processing by ATW unit 143 may be applied or initialized, after camera frame pose data 153 and inertial measurement data 102 are available and processed by SLAM unit 142 and combined into pose estimation 104 to localize computing device 100 within a map of the virtual environment. When camera frame pose data 153 is generated and provided to SLAM unit 142 at a lower frequency than the display synchronization frequency of display 128, there may be an element of data drift or data inaccuracy within the camera frame pose data 153 utilized by the SLAM unit 142 depending on when the SLAM unit 142 consumes the latest available camera frame pose data 153. Inertial measurement data 102 from IMU 155 may also experience data drift, albeit for a different reason. While inertial measurement data 102 is generally provided at a sufficiently high frequency that alignment of up-to-date inertial measurement data 102 availability is not an issue, the inertial measurement data 102 may become misaligned over time as small measurement errors compound upon one another. Therefore, camera frame pose data 153 may re-calibrate the inertial measurement data 102 provided by IMU 155.

[0036] Because tracking camera 150 provides camera frame pose data 153 at a lower frequency than the display synchronization frequency of display 128, display processor (s) 140 and / or display controller 181 may apply a time delay offset value 283 (see FIG. 2) to adjust the alignment of camera frame pose data 153 availability with the display synchronization rate so as to enable SLAM unit to consume more recent and up-to-date camera frame pose data 153 from tracking camera (s) 150 and in turn, enable ATW unit 143 to receive and consume a more accurate pose estimation 104 generated by SLAM unit 142 based on more accurate camera frame pose data 153.

[0037] Consider, for example, an XR / VR display headset operating at a display synchronization frequency of 90 or 100 Hz, while tracking camera (s) 150 capture tracking camera frame data 101 and provide camera frame pose data 153 at a lower frequency of 30 Hz or 45 Hz. In such an example, tracking camera frame data 101 are generated and camera frame pose data 153 is provided to SLAM unit 142 at different intervals than rendering engine 141 generates rendered frames 103, with each being concurrently generated only periodically when the two frequencies coincidently overlap at their harmonic or coincidence interval. Moreover, the longer the delay in obtaining and processing camera frame pose data 153 SLAM unit 142, the greater the potential for drift or error due to positional changes of the XR / VR display headset compared with camera pose data derived from the captured tracking camera frame data 101.

[0038] Current techniques for ATW processing consume and process pose estimation 104 output from SLAM unit 142 as soon as camera frame pose data 153 and inertial measurement data 102 from tracking camera (s) 150 and IMU 155 are combined by the SLAM unit 142 to generate pose estimation 104. Since SLAM unit 142 executes periodically and takes time to process camera frame pose data 153 and inertial measurement data 102 and to generate pose estimation 104, a predictable delay occurs between capturing issuing tracking camera frame data 101 capture commands, combining camera frame pose data 153 and inertial measurement data 102, and applying ATW processing. If SLAM unit 142 executes periodically without adjustment to the camera capture timing, camera capture availability alignment, or selection criteria for camera frame pose data 153, there is a likelihood that less than optimal camera frame pose data 153 will be consumed and processed by SLAM unit 142 to generate pose estimation 104 for ATW processing, potentially leading to suboptimal updates to the previously rendered frame 103.

[0039] According to aspects of the present disclosure, examples of computing device 100 are not limited to XR / VR display headsets or mobile devices such as smartphones, and tablets. Rather, examples of computing device 100 include a computer (e.g., personal computer, a desktop computer, or a laptop computer) , a mobile device such as a tablet computer, a wireless communication device (such as, e.g., smartphone, a smartwatch, a tablet, a wearable, a mobile telephone, a cellular telephone, a satellite connected telephone, and / or a mobile telephone handset) , an Internet telephone, a digital camera, a digital video recorder, a handheld device, such as a portable video game device or a personal digital assistant (PDA) , a drone device, or any device that may include one or more cameras. In some examples, computing device 100 may include one or more display processor (s) 140, a CPU 160, a video encoder / decoder 117, a GPU 180, local memory 120 and display controller 181 of GPU 180, user interface 122, memory controller 124 that provides access to system memory 130, and display interface 126 that outputs signals that cause graphical data to be displayed on display 128 including the output for display of modified rendered frames 199 providing, for example, a gaming or an XR / VR virtual experience. In other examples, display 128 outputs for display, Augmented Reality (AR) images or video, embodied within modified rendered frame (s) 199.

[0040] Computing device 100 further includes one or more tracking camera (s) 150. In some examples, tracking camera (s) 150 include one or more image sensors that may each include processing circuitry, an array of pixel sensors (e.g., pixels) for capturing representations of light, memory, such as buffer memory or on-chip sensor memory, etc. In some examples each tracking camera (s) 150 may be coupled with a different type of lens, each lens and image sensor combination having different apertures and / or fields-of-view. Example lenses may include a telephoto lens, a wide-angle lens, an ultra-wide-angle lens, or other lens types. Tracking camera (s) 150 may be equipped with infrared (IR) output and may include one or more image sensors capable of detecting the IR output within a real-world environment within a field of view of the one or more tracking camera (s) 150.

[0041] Although the various structures of computing device 100 are illustrated as separate in FIG. 1, the techniques of this disclosure are not so limited, and in some examples the structures may be combined to form a system on chip (SoC) . As an example, display processor (s) 140, CPU 160, GPU 180, and display interface 126 may be formed on a common integrated circuit (IC) chip. In some examples, one or more of display processor (s) 140, CPU 160, GPU 180, and display interface 126 may be formed on separate IC chips. In addition, in some examples, rendering engine 141, SLAM unit 142, and / or ATW unit 143 of display processor (s) 140 may be formed on a common integrated circuit (IC) chip. Various other permutations and combinations are possible, and the techniques of this disclosure should not be considered limited to the example illustrated in FIG. 1. In an example, CPU 160 may include display processor (s) 140 such that one or more of display processor (s) 140 are part of CPU 160. In such examples, CPU 160 may be configured to perform one or more of the various techniques otherwise ascribed herein to display processor (s) 140. For purposes of this disclosure, display processor (s) 140 will be described herein as being separate and distinct from CPU 160, although this may not always be the case.

[0042] The various structures illustrated in FIG. 1 may be configured to communicate with each other using bus 132. Bus 132 may be any of a variety of bus structures, such as a third-generation bus (e.g., a HyperTransport bus or an InfiniBand bus) , a second-generation bus (e.g., an Advanced Graphics Port bus, a Peripheral Component Interconnect (PCI) Express bus, or an Advanced eXtensible Interface (AXI) bus) or another type of bus or device interconnect. It should be noted that the specific configuration of buses and communication interfaces between the different structures shown in FIG. 1 is merely an example, and other configurations of computing devices and / or other image processing systems with the same or different structures may be used to implement the techniques of this disclosure.

[0043] In addition, the various components illustrated in FIG. 1 (whether formed on one device or different devices) , including IMU 155 sensor (s) 156A-N and display processor (s) 140, may be formed as at least one of fixed-function or programmable circuitry, or a combination of both, such as in one or more microprocessors, application specific integrated circuits (ASICs) , field programmable gate arrays (FPGAs) , digital signal processors (DSPs) , or other equivalent integrated or discrete logic circuitry. In addition, examples of local memory 120 include one or more volatile or non-volatile memories or storage devices, such as random-access memory (RAM) , static RAM (SRAM) , dynamic RAM (DRAM) , erasable programmable ROM (EPROM) , electrically erasable programmable ROM (EEPROM) , flash memory, a magnetic data media or an optical storage media.

[0044] In some examples, memory controller 124 may facilitate the transfer of data going into and out of system memory 130. For example, memory controller 124 may receive memory read and write commands, and service such commands with respect to system memory 130 in order to provide memory services for various components of computing device 100. In such examples, memory controller 124 may be communicatively coupled to system memory 130. Although memory controller 124 is illustrated in the example of computing device 100 of FIG. 1 as being a processing circuit that is separate from both CPU 160 and system memory 130, in some examples, some or all of the functionality of memory controller 124 may be implemented on one or more of CPU 160, system memory 130, display processor (s) 140, video encoder / decoder 117, and / or GPU 180.

[0045] System memory 130 may store program modules and / or instructions and / or data that are accessible by display processor (s) 140, CPU 160, and / or GPU 180. For example, system memory 130 may store user applications (e.g., instructions for a camera application) , resulting images from display processor (s) 140, etc. System memory 130 may additionally store information for use by and / or generated by other components of computing device 100. For example, system memory 130 may act as a device memory for display processor (s) 140. System memory 130 may include one or more volatile or non-volatile memories or storage devices, such as, for example, RAM, SRAM, DRAM, ROM, EPROM, EEPROM, flash memory, a magnetic data media or an optical storage media. In addition, system memory 130 may store image data (e.g., frames of video data, encoded video data, sensor-mode settings, zoom settings, parameters, etc. ) . In some examples, system memory 130 or local memory 120 may store the image data to on-chip memory, such as in a memory buffer of system memory 130 or local memory 120. In another example, system memory 130 or local memory 120 may output image data in order to be stored external from the memory of a chip or buffer, such as to a secure digital (SDTM) card of a camera device or in some instances, to another internal storage of a camera device. In an illustrative example, system memory 130 or local memory 120 may be embodied as buffer memory on a display processor (s) 140 chip, GPU 180 chip, or both where a single chip includes both processing circuitries.

[0046] In some examples, system memory 130 may include instructions that cause display processor (s) 140, CPU 160, GPU 180, and / or display interface 126 to perform the functions ascribed to these components in this disclosure. Accordingly, system memory 130 may be a computer-readable storage medium having instructions stored thereon that, when executed, cause one or more processors (e.g., display processor (s) 140, CPU 160, GPU 180, and display interface 126) to perform the various techniques of this disclosure.

[0047] In some examples, system memory 130 is a non-transitory storage medium. The term “non-transitory” indicates that the storage medium is not embodied in a carrier wave or a propagated signal. However, the term “non-transitory” should not be interpreted to mean that system memory 130 is non-movable or that its contents are static. As one example, system memory 130 may be removed from computing device 100, and moved to another device. As another example, memory, substantially similar to system memory 130, may be inserted into computing device 100. In certain examples, a non-transitory storage medium may store data that can, over time, change (e.g., in RAM) .

[0048] In addition, display processor (s) 140, CPU 160, and GPU 180 may store image data, user interface data, etc., in respective buffers that are allocated within system memory 130. Display interface 126 may retrieve the data from system memory 130 and configure display 128 to display the image represented by the image data, such as via a user interface 122 screen. In some examples, display interface 126 may include a digital-to-analog converter (DAC) that is configured to convert digital values retrieved from system memory 130 into an analog signal consumable by display 128. In other examples, display interface 126 may pass the digital values directly to display 128 for processing.

[0049] Computing device 100 may include a video encoder and / or video decoder 117, either of which may be integrated as part of a combined video encoder / decoder (CODEC) (e.g., a video coder) . Video encoder / decoder 117 may include a video coder that encodes video captured by one or more camera (s) 150 or a decoder that can decode compressed or encoded video data. In some instances, CPU 160 and / or display processor (s) 140 may be configured to encode and / or decode video data, in which case, CPU 160 and / or display processor (s) 140 may include video encoder / decoder 117.

[0050] CPU 160 may comprise a general-purpose or a special-purpose processor that controls operation of computing device 100. A user may provide input to computing device 100 to cause CPU 160 to execute one or more software applications. The software applications that execute on CPU 160 may include, for example, a camera application, a graphics editing application, a media player application, a video game application, a graphical user interface application or another program. For example, a camera application may allow the user to control various settings of camera 150. The user may provide input to computing device 100 via one or more input devices (not shown) such as a keyboard, a mouse, a microphone, a touch pad or another input device that is coupled to computing device 100 via user interface 122.

[0051] One example software application is an XR / VR display processing application. CPU 160 executes the XR / VR display processing application, and in response, the XR / VR display processing application causes CPU 160 to generate content that displays output. For instance, display 128 may output modified rendered frames 199 updated by ATW unit 143 using pose estimation 104 data to update previously rendered frames 103 generated by rendering engine 141, and other such information. The XR / VR display processing application may also cause CPU 160 to instruct display processor (s) 140 to process the modified rendered frames 199 output in a user-defined manner. The user of computing device 100 may interface with display 128 (e.g., via user interface 122) to configure the manner in which the modified rendered frames 199 are generated (e.g., with zoom settings applied, video or still images, point of view (POV) settings, tracking mode settings, ATW smoothness settings, and other parameters) .

[0052] Display 128 may include an XR / VR display headset, a monitor, a television, a projection device, an HDR display, a liquid crystal display (LCD) , a plasma display panel, a light emitting diode (LED) array, an organic LED (OLED) , electronic paper, a surface-conduction electron-emitted display (SED) , a laser television display, a nanocrystal display or another type of display unit. Display 128 may be integrated within computing device 100. For instance, display 128 may be a screen of a mobile telephone handset, a tablet computer, or a laptop. Alternatively, display 128 may be a stand-alone device coupled to computing device 100 via a wired or wireless communications link. For instance, display 128 may be a computer monitor or flat panel display connected to a personal computer via a cable or wireless link. Display 128 may provide preview frames that a user may view to see what is being stored or what a picture might look like if tracking camera 150 were to actually take a picture or start recording video.

[0053] In some examples, display processor (s) 140 may output a flow of frames to memory controller 124 in order for the output frames to be stored as a video file. In some examples, CPU 160, video encoder / decoder 117, and / or display processor (s) 140 may output modified rendered frames 199 to be stored as a video file. In some examples, memory controller 124 may generate and / or store modified rendered frames 199 in any suitable video file format. In some examples, video encoder / decoder 117 may encode modified rendered frames 199 prior to CPU 160, video encoder / decoder 117, and / or display processor (s) 140 causing modified rendered frames 199 to be stored as an encoded video. Encoder / decoder 117 may encode frames of image data using various encoding techniques, including those described in standards defined by MPEG-2, MPEG-4, ITU-T H. 263, ITU-T H. 264 / MPEG-4, Part 10, Advanced Video Coding (AVC) , ITU-T H. 265 / High Efficiency Video Coding (HEVC) , Versatile Video Coding (VCC) , etc., and extensions thereof. In a non-limiting example, CPU 160, video encoder / decoder 117, and / or display processor (s) 140 may cause the output frames to be stored using a Moving Picture Experts Group (MPEG) video file format.

[0054] FIG. 2 is an example timing diagram for aligning ATW processing 225 with peak accuracy 235 of pose estimation 104 data provided by SLAM processing 220, in accordance with aspects of this disclosure.

[0055] As depicted here, display processor (s) 140 include rendering engine 141 to output rendered frames 103, SLAM unit 142 to generate pose estimation 104, and ATW unit 143 to generate modified rendered frame (s) 199 for output to display 128 (see FIG. 1) by updating or modifying previously rendered frame 103.

[0056] Display controller 181 manages display synchronization interrupts (e.g., Vsync interrupts 105) in time with the display synchronization frequency of a display 128 (see FIG. 1) , including monitoring for Vsync interrupts. Display processor (s) 140 and / or display controller 181 may be configured to determine a processing delay value 282 corresponding to the processing time taken by ATW unit 143 to combine camera frame pose data 153 and inertial measurement data 102 to generate pose estimation 104. Display processor (s) 140 and / or display controller 181 may also be configured to calculate a time delay offset value 283 for issuing a camera frame capture command 230, based at least in part on the processing delay value 282.

[0057] The time delay offset value 283 may be calculated, configured, or otherwise tuned to ensure that the lower-frequency camera frame pose data 153 from tracking camera frame data 101 captured by tracking camera (s) 150 (see FIG. 1) is consumed by SLAM unit 142 at the most up-to-date point, immediately upon being captured and stored in local memory 120, system memory 130, cache, or another storage device. As depicted here, camera frame pose data 153 corresponds to the long-dashed line which reaches peak accuracy 235 at time t2 and then loses accuracy due to data drift 234.

[0058] To improve the accuracy of camera frame pose data 153 provided to SLAM unit 142 and the accuracy of pose estimation 104 provided by SLAM unit 142 for input to ATW unit 143, display processor (s) 140 and / or display controller 181 may be configured to align the issuance of camera capture command 230 at time t1 with Vsync interrupts 105 using the time delay offset value 283.

[0059] Suppose T1 corresponds to tracking camera frame data 101 generated after a capture command 230 is issued. A time period identified as T2 corresponds to how long SLAM unit 142 takes to combine camera frame pose data 153 from tracking camera (s) 150 with inertial measurement data 102 from IMU 155 (see FIG. 1) . Time t1 corresponds to the moment or timestamp at which display processor (s) 140 and / or display controller 181 issue camera capture command 230. Time t2 corresponds to the moment or timestamp when the lower frequency camera frame pose data 153 from tracking camera frame data 101 provided by tracking camera 150 is at peak accuracy 235. The time delay offset value 283 may be configured to adjust camera capture timing to alter the point in time when ATW unit 143 automatically consumes pose estimation 104 data provided as output by SLAM unit 142.

[0060] As noted above, ATW unit 143 will automatically consume pose estimation 104 data immediately upon pose estimation 104 data becoming available and SLAM unit 142 will combine camera frame pose data 153 and inertial measurement data 102 immediately upon tracking camera frame data 101 becoming available. Display processor (s) 140 and / or display controller 181 may therefore adjust the camera capture timing in advance of ATW processing 225 by issuing camera capture command 230 subsequent to waiting for a period of time corresponding to the time delay offset value 283.

[0061] As shown here, display processor (s) 140 and / or display controller 181 may monitor for Vsync interrupt 105 and trigger the time delay offset value 283 followed by issuance of the camera capture command 230 when Vsync interrupt 105 is detected. In other examples, display processor (s) 140 and / or display controller 181 triggers the time delay offset value 283 followed by issuance of the camera capture command 230 every N Vsync interrupts 105, where N is some configurable integer adjustable based on the frequency of tracking camera (s) 150 and the display synchronization frequency of the output display. In some examples, display processor (s) 140 and / or display controller 181 triggers the time delay offset value 283 followed by issuance of the camera capture command 230 every N Vsync interrupts 105, where N is a non-integer number configurable to coincide with peak accuracy 235 of camera frame pose data 153 or recency of tracking camera frame data 101, or both. In other examples, N is a configurable integer or non-integer configurable to coincide with pose estimation 104 data satisfying an accuracy or recency threshold.

[0062] The term T3 corresponds to the period of time (e.g., delay) until ATW unit 143 executes ATW processing after detection of Vsync interrupt 105. Display controller 181 may count Vsync interrupts 105 and coordinate issuance of camera capture commands 230 corresponding to every Vsync interrupt 105, every other Vsync interrupt 105, every third Vsync interrupt 105, or some configurable N multiplier of Vsync interrupts 105 using the time delay offset value 283 which precedes the camera capture command 230. For example, time delay offset value 283 may be calculated to include the duration of delay value 282 for the SLAM unit 142 plus the duration of, by way of example only, two Vsync interrupts 105 interval periods to cause ATW processing 225 to occur after every other Vsync interrupt 105 (e.g., every 2 Vsync interrupts 105) plus the SLAM unit 142 processing delay such that ATW processing 225 consumes pose estimation 104 data at or near peak accuracy 235.

[0063] According to such examples, to align t2 (peak accuracy 235) with ATW processing 225 by ATW unit 143, display processor (s) 140 and / or display controller 181 may issue the camera capture command 230 every N Vsync interrupts 105 with a time offset value 283, where the time offset value 283 is calculated according to Toffset= (Toffset′+Tvync-T3)%Tvsync, where indicates t2 is aligned with Vsync interrupt 105.

[0064] According to one example, display processor (s) 140 and / or display controller 181 may monitor for and count Vsync interrupts 105, and apply time offset value 283 Toffset , as a configurable value according to the following pseudo code:

[0065] For instance, consider the two following XR / VR display headset configurations. A first configuration uses 90Hz display Vsync frequency with 30Hz camera tracking frequency and a second configuration uses 90Hz display Vsync frequency with 45Hz camera tracking frequency.

[0066] Assuming the two frequencies are related as FVsync =N*Ftracking camera, where N is an integer, then a future configuration for XR / VR display headset having a Vsync display frequency increased to 120Hz may nevertheless be accommodated by configuring the camera 150 frequency to values such as 30Hz or 40Hz, among others, as evenly divisible into the higher display synchronization frequency.

[0067] As depicted by FIG. 2, the pose accuracy curve (dashed curve) results from the differing update rates of the inputs into SLAM unit 142, specifically tracking camera frame data 101 and inertial measurement data 102, each provided into SLAM unit 142 (see FIG. 1) at different frequencies. For example, if tracking camera frame data 101 generation frequency is 45 Hz, while inertial measurement data 102 generation frequency is 1000 Hz, SLAM unit 142 generates pose data every 1 ms (1 / 1000 Hz) upon receipt of inertial measurement data 102. However, in this example, the same tracking camera frame data 101 input persists for 22 ms (1 / 45 Hz) . As a result, pose accuracy degrades over each 22 ms period, even though inertial measurement data 102 is refreshed every 1 ms, until such time that a new tracking camera frame data 101 is received by SLAM unit 142 and combined with inertial measurement data. In some examples, tracking camera frame data 101 is obtained and camera frame pose data 153 is generated as an intermediate output. Similarly, inertial measurement data 102 is obtained and inertial pose data 154 is generated as another intermediate output. In such an example, intermediate output camera frame pose data 153 and intermediate output inertial pose data 154 may be combined (e.g., the intermediate outputs may be combined) to generate pose estimation. Because inertial measurement data 102 (and correspondingly inertial pose data 154 as an intermediate output) is provided with a higher frequency, the improved implementation of SLAM unit 142 may benefit from a focus on the slower and less frequent camera frame pose data 153 (and correspondingly the slower and less frequent camera frame pose data 153 as an intermediate output) rather than the faster and more frequent inertial pose data 154 (see FIG. 1) .

[0068] As described, processing circuitry calculates t1 based on T1, T2, and T3, corresponding to elements 282 and 283, and the monitored timestamps of Vsync interrupts 105 for issuing camera capture command 230. With t1 calculated, processing circuitry is configured to ensure pose estimation 104 is available just in time for ATW processing 225 or in a highly optimized example, to enable both to occur simultaneously.

[0069] FIG. 3 is a flowchart illustrating an example operation of display processing in accordance with example techniques of this disclosure. The techniques of FIG. 3 may be performed by one or more processors, such as display processor (s) 140 and / or display controller 181 of FIG. 1 and FIG. 2.

[0070] In one example of the disclosure, display processor (s) 140 and / or display controller 181 may be configured to determine a processing delay value 282 (302) . For instance, display processor (s) 140 and / or display controller 181 may be configured to determine a processing delay value 282 to combine camera frame pose data 153 with inertial measurement data 102.

[0071] According to another example of the disclosure, display processor (s) 140 and / or display controller 181 may be configured to determine a time delay offset value 283 (304) . For instance, camera processor (s) 140 may be configured to determine a time delay offset value 283 for issuing a tracking camera frame capture command 230 based at least in part on the processing delay value 282.

[0072] According to another example of the disclosure, display processor (s) 140 and / or display controller 181 may be configured to monitor for a Vsync interrupt 105 (306) . For instance, camera processor (s) 140 may be configured to monitor for a display synchronization interrupt (e.g., Vsync interrupt 105) by device 100.

[0073] According to another example of the disclosure, display processor (s) 140 and / or display controller 181 may be configured to issue a tracking camera frame capture command 230 at the timestamp calculated from the time delay offset value 283 (308) and also to apply asynchronous time warp (ATW) processing 225 to modify a previously rendered frame 103 after the time delay offset value 283 (310) . For instance, responsive to detection of the display synchronization interrupt (Vsync 105) , display processor (s) 140 and / or display controller 181 may be configured to issue the tracking camera frame capture command 230 to generate new camera frame pose data 153 after a delay corresponding to the time delay offset value 283; and to also apply ATW processing 225 function to modify a previously rendered frame 103 using the new camera frame pose data 153 and new inertial measurement data 102.

[0074] According to another example of the disclosure, display processor (s) 140 and / or display controller 181 may also be configured to generate an updated display frame (e.g., modified rendered frame 199) from the previously rendered display frame 103 using the ATW processing 225 function; and to output the updated display frame (e.g., modified rendered frame 199) from display 128 of device 100 superseding output of the previously rendered frame 103.

[0075] Additional illustrative aspects of the disclosure are listed below.

[0076] Clause 1 –A device configured for display processing, the device comprising: a memory configured to receive tracking camera frame data and inertial measurement data for the device; and a processing system in communication with the memory, the processing system configured to: determine a processing delay value for the processing system to combine the tracking camera frame data with the inertial measurement data; determine a time delay offset value for issuing a camera frame capture command based at least in part on the processing delay value; monitor for a display synchronization interrupt by the device; responsive to detection of the display synchronization interrupt, issue the camera frame capture command to generate new tracking camera frame data after a delay corresponding to the time delay offset value; and apply an Asynchronous Time Warp (ATW) function to modify a previously rendered display frame using the new tracking camera frame data and new inertial measurement data.

[0077] Clause 2 –The device of clause 1, wherein the processing system is further configured to: generate an updated display frame from the previously rendered display frame using the ATW function; and output the updated display frame for display by the device superseding output of the previously rendered display frame.

[0078] Clause 3 –The device of clause 1 or 2, wherein the processing system is further configured to: obtain the new tracking camera frame data from a new tracking camera frame; obtain the new inertial data from new inertial measurements; and combine the new tracking camera frame data and the new inertial measurement data into a map of a virtual environment with a pose estimation indicating at least a location and an orientation of the device within the virtual environment.

[0079] Clause 4 –The device of any of clauses 1-3, wherein the processing system further includes: a display rendering engine to generate Virtual Reality (VR) display output corresponding to a virtual environment, eXtended Reality (XR) display output corresponding to the virtual environment, Augmented Reality (AR) display output corresponding to the virtual environment, or some combination thereof.

[0080] Clause 5 –The device of any of clauses 1-4, wherein the processing system is further configured to: obtain the new tracking camera frame data from a new tracking camera frame; obtain the new inertial data from new inertial measurements; and combine the new tracking camera frame data and the new inertial measurement data into the virtual environment; generate an updated display frame from the previously rendered display frame using an estimated pose created from a combination of the new tracking camera frame data and the new inertial measurement data to localize the device within the virtual environment; and update the one of the VR display output, the XR display output, or the AR display output according to the virtual environment.

[0081] Clause 6 –The device of any of clauses 1-5, wherein the processing system further includes: a game rendering engine to render gaming display output corresponding to a virtual environment; and wherein the processing system is further configured to: render the gaming display output at a frequency higher than the tracking camera frame data is captured; obtain the new tracking camera frame data and the new inertial measurement data subsequent to the gaming display output being rendered; apply the ATW function to generate updated gaming display output using the new tracking camera frame data and the new inertial measurement data combined into a pose estimation to localize the device within the virtual environment; and output the updated gaming display output for display by the device.

[0082] Clause 7 –The device of any of clause 1-6: wherein the device is configured as a Virtual Reality (VR) device, configured as an eXtended Reality (XR) device, or configured as an Augmented Reality (AR) device; wherein the device further includes: an inertial measurement unit (IMU) sensor; a tracking camera; and wherein the processing system is further configured to: obtain the new inertial measurement data from the IMU sensor an generate intermediate inertial pose data; obtain the new tracking camera frame data from the tracking camera and generate intermediate camera frame pose data; and combine the intermediate inertial pose data and the intermediate camera frame pose data into a pose estimation indicating at least a location and an orientation of the device within a virtual environment.

[0083] Clause 8 –The device of any of clauses 1-7, wherein the processing system is further configured to: generate rendered frames for output using a display at a first frequency for vertical display synchronization; generate the inertial measurement data using the IMU sensor at a second frequency; generate the tracking camera frame data from tracking camera frames captured using the tracking camera at a third frequency, wherein the third frequency to generate the tracking camera frame data from camera frames is lower than the first frequency or vertical display synchronization and lower than the second frequency to generate the inertial measurement data using the IMU sensor; and configure execution of the ATW function to align with the tracking camera frame data generated at the third frequency using the time delay offset and the display synchronization interrupt.

[0084] Clause 9 –The device of any of clauses 1-8, wherein the processing system is further configured to: align a virtual representation of the device within a virtual environment with an orientation of the device within a real-world environment using the new tracking camera frame data and the new inertial measurement data combined into a pose estimation to localize the device within the virtual environment.

[0085] Clause 10 –The device of any of clauses 1-9, wherein the processing system is further configured to: execute a SLAM (Simultaneous Localization and Mapping) algorithm to localize the device within a virtual environment based on a combination of the new tracking camera frame data and the new inertial measurement data.

[0086] Clause 11 –The device of any of clauses 1-10, wherein the processing system is further configured to: select the new tracking camera frame data to combine with the new inertial measurement data for the ATW function from a most recent tracking camera frame available subsequent to a period of time corresponding to the processing delay value; and apply the ATW function using new tracking camera frame data selected and combined with the new inertial measurement data.

[0087] Clause 12 –The device of any of clauses 1-11, wherein the processing system is further configured to: store calibration information indicating the processing delay value; and determine the time delay offset value using the calibration information.

[0088] Clause 13 –The device of any of clauses 1-12, wherein the processing system is further configured to: track head movements of a user wearing the device relative to a virtual environment using the new tracking camera frame data and the new inertial measurement data combined to localize the device within the virtual environment.

[0089] Clause 14 –The device of any of clauses 1-13: wherein the display synchronization interrupt is one of a plurality of Vsync interrupts performed by the processing system immediately preceding generation of each of a plurality of rendered display frames; and wherein the processing system is further configured to: monitor for every N Vsync interrupts among the plurality of Vsync interrupts; wherein N is an integer representing a defined relationship between a Vsync frequency for the plurality of Vsync interrupts and a tracking camera frame capture frequency for iterative generation of the new tracking camera frame data.

[0090] Clause 15 –A method of display processing, the method comprising: determining a processing delay value to combine tracking camera frame data with inertial measurement data; determining a time delay offset value for issuing a camera frame capture command based at least in part on the processing delay value; monitoring for a display synchronization interrupt; responsive to detection of the display synchronization interrupt, issuing the camera frame capture command to generate new tracking camera frame data after a delay corresponding to the time delay offset value; and applying an Asynchronous Time Warp (ATW) function to modify a previously rendered display frame using the new tracking camera frame data and new inertial measurement data.

[0091] Clause 16 –The method of clause 15, further comprising: generating an updated display frame from the previously rendered display frame using the ATW function; and outputting the updated display frame for display superseding output of the previously rendered display frame.

[0092] Clause 17 –The method of any of clauses 15-16, further comprising: generating Virtual Reality (VR) display output corresponding to a virtual environment, eXtended Reality (XR) display output corresponding to the virtual environment, Augmented Reality (AR) display output corresponding to the virtual environment, or some combination thereof; obtaining the new tracking camera frame data from a new tracking camera frame; obtaining the new inertial data from new inertial measurements; combining the new tracking camera frame data and the new inertial measurement data into a map of a virtual environment with a pose estimation indicating at least a location and an orientation of a device within the virtual environment; and updating the VR display output, the XR display output, or the AR display output according to the virtual environment.

[0093] Clause 18 –The method of any of clauses 1-17, further comprising: executing a SLAM (Simultaneous Localization and Mapping) algorithm to localize a device within a virtual environment based on a combination of the new tracking camera frame data and the new inertial measurement data.

[0094] Clause 19 –The method of any of clauses 1-18, further comprising: selecting the new tracking camera frame data to combine with the new inertial measurement data for the ATW function from a most recent tracking camera frame available subsequent to a period of time corresponding to the processing delay value; and applying the ATW function using the new tracking camera frame data selected and combined with the new inertial measurement data.

[0095] Clause 20 –A non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors to: determine a processing delay value to combine tracking camera frame data with inertial measurement data; determine a time delay offset value for issuing a camera frame capture command based at least in part on the processing delay value; monitor for a display synchronization interrupt; responsive to detection of the display synchronization interrupt, issue the camera frame capture command to generate new tracking camera frame data after a delay corresponding to the time delay offset value; and apply an Asynchronous Time Warp (ATW) function to modify a previously rendered display frame using the new tracking camera frame data and new inertial measurement data.

[0096] Clause 21 –A computer program product comprising one or more instructions that, when executed by at least one processor, cause the at least one processor to perform any of the methods of clauses 15-19.

[0097] Clause 22 –A device comprising means for performing any combination of techniques of clauses 15-19.

[0098] In one or more clauses, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over, as one or more instructions or code, a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to a tangible medium such as data storage media. In this manner, computer-readable media generally may correspond to tangible computer-readable storage media which is non-transitory. Data storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and / or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium.

[0099] By way of clause, and not limitation, such computer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, cache memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. It should be understood that computer-readable storage media and data storage media do not include carrier waves, signals, or other transient media, but are instead directed to non-transient, tangible storage media. Disk and disc, as used herein, includes compact disc (CD) , laser disc, optical disc, digital versatile disc (DVD) , floppy disk and Blu-ray disc, where discs usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.

[0100] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs) , general purpose microprocessors, application specific integrated circuits (ASICs) , field programmable logic arrays (FPGAs) , or other equivalent integrated or discrete logic circuitry. Accordingly, the term “processor, ” as used herein may refer to any of the foregoing structures or any other structure suitable for implementation of the techniques described herein. Also, the techniques could be fully implemented in one or more circuits or logic elements.

[0101] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (e.g., a chip set) . Various components, modules, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units.

[0102] Various aspects of the disclosure have been described. These and other clauses are within the scope of the following claims.

Claims

1.A device configured for display processing, the device comprising:a memory configured to receive tracking camera frame data and inertial measurement data for the device; anda processing system in communication with the memory, the processing system configured to:determine a processing delay value for the processing system to combine the tracking camera frame data with the inertial measurement data;determine a time delay offset value for issuing a camera frame capture command based at least in part on the processing delay value;monitor for a display synchronization interrupt by the device;responsive to detection of the display synchronization interrupt, issue the camera frame capture command to generate new tracking camera frame data after a delay corresponding to the time delay offset value; andapply an Asynchronous Time Warp (ATW) function to modify a previously rendered display frame using the new tracking camera frame data and new inertial measurement data.2.The device of claim 1, wherein the processing system is further configured to:generate an updated display frame from the previously rendered display frame using the ATW function; andoutput the updated display frame for display by the device superseding output of the previously rendered display frame.3.The device of claim 1, wherein the processing system is further configured to:obtain the new tracking camera frame data from a new tracking camera frame;obtain the new inertial data from new inertial measurements; andcombine the new tracking camera frame data and the new inertial measurement data into a map of a virtual environment with a pose estimation indicating at least a location and an orientation of the device within the virtual environment.4.The device of claim 1, wherein the processing system further includes:a display rendering engine to generate Virtual Reality (VR) display output corresponding to a virtual environment, eXtended Reality (XR) display output corresponding to the virtual environment, Augmented Reality (AR) display output corresponding to the virtual environment, or some combination thereof.5.The device of claim 4, wherein the processing system is further configured to:obtain the new tracking camera frame data from a new tracking camera frame;obtain the new inertial data from new inertial measurements; andcombine the new tracking camera frame data and the new inertial measurement data into the virtual environment;generate an updated display frame from the previously rendered display frame using an estimated pose created from a combination of the new tracking camera frame data and the new inertial measurement data to localize the device within the virtual environment; andupdate the one of the VR display output, the XR display output, or the AR display output according to the virtual environment.6.The device of claim 1, wherein the processing system further includes:a game rendering engine to render gaming display output corresponding to a virtual environment; andwherein the processing system is further configured to:render the gaming display output at a frequency higher than the tracking camera frame data is captured;obtain the new tracking camera frame data and the new inertial measurement data subsequent to the gaming display output being rendered;apply the ATW function to generate updated gaming display output using the new tracking camera frame data and the new inertial measurement data combined into a pose estimation to localize the device within the virtual environment; andoutput the updated gaming display output for display by the device.7.The device of claim 1:wherein the device is configured as a Virtual Reality (VR) device, configured as an eXtended Reality (XR) device, or configured as an Augmented Reality (AR) device;wherein the device further includes:an inertial measurement unit (IMU) sensor;a tracking camera; andwherein the processing system is further configured to:obtain the new inertial measurement data from the IMU sensor an generate intermediate inertial pose data;obtain the new tracking camera frame data from the tracking camera and generate intermediate camera frame pose data; andcombine the intermediate inertial pose data and the intermediate camera frame pose data into a pose estimation indicating at least a location and an orientation of the device within a virtual environment.8.The device of claim 7, wherein the processing system is further configured to:generate rendered frames for output using a display at a first frequency for vertical display synchronization;generate the inertial measurement data using the IMU sensor at a second frequency;generate the tracking camera frame data from tracking camera frames captured using the tracking camera at a third frequency, wherein the third frequency to generate the tracking camera frame data from camera frames is lower than the first frequency or vertical display synchronization and lower than the second frequency to generate the inertial measurement data using the IMU sensor; andconfigure execution of the ATW function to align with the tracking camera frame data generated at the third frequency using the time delay offset and the display synchronization interrupt.9.The device of claim 1, wherein the processing system is further configured to:align a virtual representation of the device within a virtual environment with an orientation of the device within a real-world environment using the new tracking camera frame data and the new inertial measurement data combined into a pose estimation to localize the device within the virtual environment.10.The device of claim 1, wherein the processing system is further configured to:execute a SLAM (Simultaneous Localization and Mapping) algorithm to localize the device within a virtual environment based on a combination of the new tracking camera frame data and the new inertial measurement data.11.The device of claim 1, wherein the processing system is further configured to:select the new tracking camera frame data to combine with the new inertial measurement data for the ATW function from a most recent tracking camera frame available subsequent to a period of time corresponding to the processing delay value; andapply the ATW function using new tracking camera frame data selected and combined with the new inertial measurement data.12.The device of claim 1, wherein the processing system is further configured to:store calibration information indicating the processing delay value; anddetermine the time delay offset value using the calibration information.13.The device of claim 1, wherein the processing system is further configured to:track head movements of a user wearing the device relative to a virtual environment using the new tracking camera frame data and the new inertial measurement data combined to localize the device within the virtual environment.14.The device of claim 1:wherein the display synchronization interrupt is one of a plurality of Vsync interrupts performed by the processing system immediately preceding generation of each of a plurality of rendered display frames; andwherein the processing system is further configured to:monitor for every N Vsync interrupts among the plurality of Vsync interrupts;wherein N is an integer representing a defined relationship between a Vsync frequency for the plurality of Vsync interrupts and a tracking camera frame capture frequency for iterative generation of the new tracking camera frame data.15.A method of display processing, the method comprising:determining a processing delay value to combine tracking camera frame data with inertial measurement data;determining a time delay offset value for issuing a camera frame capture command based at least in part on the processing delay value;monitoring for a display synchronization interrupt;responsive to detection of the display synchronization interrupt, issuing the camera frame capture command to generate new tracking camera frame data after a delay corresponding to the time delay offset value; andapplying an Asynchronous Time Warp (ATW) function to modify a previously rendered display frame using the new tracking camera frame data and new inertial measurement data.16.The method of claim 15, further comprising:generating an updated display frame from the previously rendered display frame using the ATW function; andoutputting the updated display frame for display superseding output of the previously rendered display frame.17.The method of claim 15, further comprising:generating Virtual Reality (VR) display output corresponding to a virtual environment, eXtended Reality (XR) display output corresponding to the virtual environment, Augmented Reality (AR) display output corresponding to the virtual environment, or some combination thereof;obtaining the new tracking camera frame data from a new tracking camera frame;obtaining the new inertial data from new inertial measurements;combining the new tracking camera frame data and the new inertial measurement data into a map of a virtual environment with a pose estimation indicating at least a location and an orientation of a device within the virtual environment; andupdating the VR display output, the XR display output, or the AR display output according to the virtual environment.18.The method of claim 15, further comprising:executing a SLAM (Simultaneous Localization and Mapping) algorithm to localize a device within a virtual environment based on a combination of the new tracking camera frame data and the new inertial measurement data.19.The method of claim 15, further comprising:selecting the new tracking camera frame data to combine with the new inertial measurement data for the ATW function from a most recent tracking camera frame available subsequent to a period of time corresponding to the processing delay value; andapplying the ATW function using the new tracking camera frame data selected and combined with the new inertial measurement data.20.A non-transitory computer-readable storage medium storing instructions that, when executed, cause one or more processors to:determine a processing delay value to combine tracking camera frame data with inertial measurement data;determine a time delay offset value for issuing a camera frame capture command based at least in part on the processing delay value;monitor for a display synchronization interrupt;responsive to detection of the display synchronization interrupt, issue the camera frame capture command to generate new tracking camera frame data after a delay corresponding to the time delay offset value; andapply an Asynchronous Time Warp (ATW) function to modify a previously rendered display frame using the new tracking camera frame data and new inertial measurement data.