Rendering for electronic devices

CN115810070BActive Publication Date: 2026-09-04APPLE INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202211103371.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2022-08-30
Filing Date
2022-09-09
Publication Date
2026-09-04
Estimated Expiration
2042-09-09

Smart Images

  • Figure CN115810070B_ABST
    Figure CN115810070B_ABST
Patent Text Reader

Abstract

This document relates to “rendering for electronic devices.” Aspects of the subject technology relate to providing frame rate arbitration for electronic devices. Frame rate arbitration can include determining a global frame rate based on frame rate parameters from one or more animation sources, and providing the global frame rate to the animation sources. The frame rate parameters of various animation sources can have different preferred frame rates, minimum frame rates, and / or maximum frame rates, and the global frame rate can be determined so as to simultaneously display multiple animations from the multiple animation sources. In one or more implementations, frame rate arbitration can also be performed based on frame rate parameters from input sources.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-references to related applications

[0002] This application claims the benefit of priority to U.S. Provisional Patent Application No. 63 / 243,693, entitled “Rendering for Electronic Devices,” filed September 13, 2021, the disclosure of which is incorporated herein by reference in its entirety. Technical Field

[0003] This specification relates in its entirety to electronic devices, including, for example, rendering for electronic devices. Background Technology

[0004] Electronic devices typically include multiple sources of content that are displayed using the device's display. Attached Figure Description

[0005] Some features of this subject matter are shown in the appended claims. However, for illustrative purposes, several specific embodiments of this subject matter are illustrated in the following figures.

[0006] Figure 1 An exemplary system architecture is shown, comprising various electronic devices that can implement the system of this subject, according to one or more specific implementations.

[0007] Figure 2 A schematic diagram of an exemplary computing device is shown that can implement aspects of the techniques of this subject matter.

[0008] Figure 3 An example of a computing device displaying multiple animations according to one or more specific implementations is shown.

[0009] Figure 4 A timing diagram is shown, illustrating aspects of rendering multiple animations at multiple frame rates for a display with an original refresh rate, according to one or more specific implementations.

[0010] Figure 5 The illustration shows, according to one or more specific embodiments, a frame rate with a ratio Figure 4 A timing diagram of aspects of rendering animations on a monitor with a higher original refresh rate.

[0011] Figure 6 The illustration shows an example of one or more specific implementations at another frame rate. Figure 5 A timing diagram of aspects of the display rendering animation.

[0012] Figure 7 A timing diagram is shown illustrating aspects of rendering multiple animations at incompatible frame rates.

[0013] Figure 8A schematic diagram of another exemplary computing device is shown, which can implement aspects of the technologies of this subject matter.

[0014] Figure 9 A schematic diagram is shown of additional features that may be included in a computing device that can implement the techniques of this subject matter.

[0015] Figure 10 A timing diagram illustrating the immediate frame rate transition is shown.

[0016] Figure 11A and Figure 11B A timing diagram is shown illustrating aspects of phase shift that can occur before and after frame rate transitions.

[0017] Figures 12A to 12H A timing diagram is shown illustrating the operation of an electronic device displaying multiple animations using frame rate arbitration, according to one or more specific implementations.

[0018] Figure 13 A flowchart illustrating an exemplary process for operating an electronic device to display multiple animations, according to various aspects of the subject matter, is shown.

[0019] Figure 14 Exemplary computing devices are shown that can be used to implement various aspects of the techniques of this subject matter. Detailed Implementation

[0020] The specific embodiments shown below are intended to describe various configurations of the subject matter and are not intended to represent the only configuration in which the subject matter can be practiced. The accompanying drawings are incorporated herein and form part of the specific embodiments. The specific embodiments include particular details intended to provide a thorough understanding of the subject matter. However, the subject matter is not limited to the specific details described herein and can be practiced using one or more other specific embodiments. In one or more specific embodiments, structures and components are shown in block diagram form to avoid obscuring the concepts of the subject matter.

[0021] Specific embodiments of the subject matter described herein provide for the simultaneous display of multiple animations from multiple animation sources, including simultaneous display when these multiple animation sources have different preferred frame rates and / or other frame rate constraints. In one or more embodiments, the subject matter facilitates the use of variable display frame rates for device displays, which can reduce the power consumption of the display. In one or more embodiments, a frame rate arbitration system and method are provided, wherein one or more animation sources provide frame rate parameters to a system process, the system process determines a global frame rate for rendering display frames, and the system process notifies the one or more animation sources of the global frame rate. The animation sources can then provide frames at the global frame rate or another frame rate compatible with the global frame rate.

[0022] Figure 1 An exemplary system architecture 100 comprising various electronic devices capable of implementing the system of this subject matter, according to one or more embodiments, is shown. However, not all depicted components are usable in all embodiments, and one or more embodiments may include additional or different components compared to those shown in the figures. Variations in the arrangement and type of these components may be made without departing from the spirit or scope of the claims set forth herein. Additional components, different components, or fewer components may be provided.

[0023] System architecture 100 includes electronic devices 104, 105, 110, 115, and server 120. For illustrative purposes, system architecture 100 is described in... Figure 1 The system is shown as including electronic devices 104, 105, 110, 115 and server 120; however, system architecture 100 may include any number of electronic devices and any number of servers.

[0024] Any or all of electronic devices 104, 105, and 110 may be implemented as a smartphone, tablet, other portable electronic device, and / or wearable device (such as a smartwatch or other wearable device) that includes a display system capable of displaying a rendered display frame to a user 101. Any or all of electronic devices 104, 105, and 110 may be powered by a battery and / or any other power source.

[0025] In some examples, any or all of electronic devices 104, 105, and 110 may display rendered display frames, which may include one or more animated and / or static content. Static content may include content that remains unchanged on the display over multiple display frames and / or human-perceptible time periods (e.g., periods longer than one second or a fraction of a second, or longer periods such as periods lasting or longer than one minute). Animations may include content that changes on the display over a series of display frames and / or human-perceptible time periods, such as content that changes continuously, occasionally, or periodically over one second, a fraction of a second, several seconds, and / or longer time periods (e.g., several seconds, several hours, or several days). In one or more embodiments, the displayed animated and / or static content may be perceived by a user and interacted with in real time. In addition, electronic devices 104, 105, and 110 may output sound and / or tactile or sensory feedback to the user. As discussed in further detail below, the rendered display frame can be provided to the display with a global frame rate, which is determined using a frame rate arbitration process based on frame rate parameters provided by one or more animation sources included in the displayed frame.

[0026] Network 106 may communicatively (directly or indirectly) couple electronic devices 105, 110, and / or 115 to server 120 and / or one or more electronic devices of one or more other users. In one or more embodiments, network 106 may be an interconnection network of devices that may include the Internet or be communicatively coupled to the Internet.

[0027] Any or all of electronic devices 104, 105, and / or 110 may include a touchscreen or other touch-sensitive surface, which includes touch sensor elements configured to sense touch events from a stylus, a user's finger, or other input device. Any or all of electronic devices 104, 105, and 110 may be, for example, a smartphone including a touchscreen or other touch-sensitive surface; a portable computing device (such as a laptop computer) including a touchscreen or other touch-sensitive surface; a peripheral device including a touchscreen or other touch-sensitive surface (e.g., a digital camera, headphones); a tablet device including a touchscreen or other touch-sensitive surface; a wearable device including a touchscreen or other touch-sensitive surface (such as a watch, wristband, etc.); any other suitable device including, for example, a touchscreen or other touch-sensitive surface; or any electronic device with a touchpad. In one or more embodiments, electronic devices 104, 105, and / or 110 may not include a touchscreen, but may support input gestures similar to those with a touchscreen. Figure 1 For example, electronic devices 110 and 104 are depicted as mobile smartphones with touchscreens, and electronic device 105 is depicted as a tablet device. In one or more embodiments, electronic devices 104, 105, 110, 115, and / or 105 may be and / or may include the following relative to... Figure 14 All or part of the electronic system under discussion. In one or more embodiments, electronic device 104, electronic device 105 and / or electronic device 110 may be or include another device, such as an Internet Protocol (IP) camera, a tablet computer or a peripheral device such as an electronic stylus.

[0028] Electronic device 115 may be, for example, a desktop computer, portable computing devices such as laptop computers, smartphones, peripherals (e.g., digital cameras, headphones), tablet devices, wearable devices such as watches, wristbands, etc. Figure 1 In this context, by way of example, electronic device 115 is described as a desktop computer. Electronic device 115 may be and / or may include the following relative to... Figure 14 The electronic system under discussion may be all or part of the system, and / or may implement a frame arbitration process as described herein.

[0029] Server 120 may form all or part of a computer network or server group 130, such as in a cloud computing or data center implementation. For example, server 120 stores data and software and includes specific hardware (e.g., processors, graphics processors, and other dedicated or custom processors) for rendering and generating extended reality content such as graphics, images, videos, audio, and multimedia files. In one specific implementation, server 120 may function as a cloud storage server that stores any of the aforementioned extended reality content generated by the aforementioned devices and / or server 120.

[0030] Figure 2 An exemplary architecture, which may be implemented by an electronic device 105, according to one or more specific embodiments of the subject matter, is shown. For illustrative purposes, Figure 2 The architecture is described as being composed of Figure 1 The electronic device 105 is implemented, such as by a processor and / or memory of the electronic device; however, suitable portions of the architecture may be implemented by any other electronic device, including electronic device 104, electronic device 110, electronic device 115, and / or server 120. However, not all depicted components are usable in all specific embodiments, and one or more specific embodiments may include additional or different components compared to those shown in the figures. Variations in the arrangement and type of these components may be made without departing from the spirit or scope of the claims set forth herein. Additional components, different components, or fewer components may be provided.

[0031] Figure 2 The various parts of the architecture can be implemented in software or hardware, including by one or more processors and a memory device containing instructions that, when executed by the processor, cause the processor to perform the operations described herein.

[0032] exist Figure 2 In the example, one or more content sources (such as application 202 and / or system process 204) may each provide content to rendering service 223. As shown, the content sources may provide static and / or animated content to the rendering service. As shown, rendering service 223 may generate rendered display frames for display by display 225, these rendered display frames including some or all of the content from the content sources. As shown, display 225 may output the displayed frames (e.g., displaying the frame pixels of each rendered display frame by manipulating the display pixel array).

[0033] One or more applications, such as application 202, and / or one or more system processes, such as system process 204, may each provide animated content including one or more animations for display by the monitor. In some use cases, multiple animations from multiple animation sources (e.g., multiple animations from an application, one animation from multiple animations, multiple animations from a system process, and / or one animation from multiple system processes) may be provided for simultaneous display by monitor 225.

[0034] For example, Figure 3 The illustration shows a use case where the electronic device 105 is implemented as a smartphone or tablet device and the display 225 of the electronic device displays a home screen that includes static content and multiple simultaneously animated screens. In this example, when user input (e.g., from an input source such as a stylus 308 indicated by arrow 321) causes the icon 310 to scroll in the direction indicated by arrow 323 (e.g., scrolling from one home screen of the device to the next home screen of the device), the display 225 simultaneously displays a background 312, multiple icons 310 (e.g., application icons), a battery indicator 300, a process indicator 304, button press indicators such as a volume indicator 306 generated due to pressing the volume button 309, and a signal strength indicator 302.

[0035] In this example, background 312 is static content from system processes such as system process 204. In this example, the scrolling animations of battery indicator 300, signal strength indicator 302, volume indicator 306, and icon 310 are animations from system process 204. In this example, process indicator 304 is an animation from application 202. Figure 3 The scrolling animation shown is merely illustrative and other scrolling animations are available, such as when a system process or application's user interface (UI) displays a vertically or horizontally scrollable list (e.g., in a drop-down menu) and the user enters a swipe or other input to cause the list to scroll.

[0036] Each animation source (e.g., system process 204 and application 202) may have constraints and / or preferences that allow it to generate corresponding animations. For example, a particular animation source may have a preferred frame rate, a minimum frame rate, and / or a maximum frame rate for a particular animation. For instance, the preferred frame rate for a particular animation might be the frame rate at which the animation appears best on display 225, the minimum frame rate might be the frame rate at which optical artifacts (such as glitches or blurs) may be perceptible on the display below that frame rate, and the maximum frame rate might be the maximum frame rate at which the animation source can generate frames for the particular animation (e.g., due to the time taken for other processing operations to generate the frames). In the example of a scrolling animation, a frame rate faster than the rate that the human eye can distinguish between low and high refresh rates may be used, depending on the speed of the scroll input. Because scrolling animations can occur at different scrolling speeds (e.g., based on the speed of an input swipe or gesture) and / or can slow down over time to simulate physical scrolling, a scrolling animation source can determine the preferred, minimum, and / or maximum frame rate at a given time during scrolling by receiving scrolling input and applying that input to a model (e.g., a human perception model) to obtain frame rate parameters. For example, the scrolling animation can obtain the speed of the scrolling input and extract the frame rate corresponding to that scrolling input from the human perception model as the preferred or minimum frame rate. For example, the human perception model can map the scrolling speed to a minimum frame rate below which frame transitions will be perceived typically by humans.

[0037] Furthermore, the display 225 itself may have a native refresh rate. For example, the native refresh rate of the display 225 may be (e.g., the rate at which the pixels of the display are periodically refreshed in response to a vertical sync (VSYNC) signal), and may be determined by the display manufacturer or device manufacturer. In various embodiments, the native refresh rate of the display 225 may be 50 Hz, 60 Hz, 120 Hz, 240 Hz, or higher. In one or more embodiments, Figure 3 The multiple animations shown can be generated at a frame rate compatible with the monitor's original refresh rate (e.g., an even factor of that original refresh rate).

[0038] However, requiring animation to be generated only at even factors of the original refresh rate can result in animation being generated at frame rates that are undesirable for animation quality and / or other source preferences or settings, and may also lead to inefficient use of device power. For example, a monitor's refresh rate can be substantially proportional to its power consumption; the higher the refresh rate, the more power the monitor will consume. Therefore, it may be desirable to be able to adjust the monitor's refresh rate. However, modifying the monitor's refresh rate when multiple animation sources provide multiple animations for display can lead to frame rate incompatibility, which can result in potentially unwanted visible artifacts.

[0039] For example, in one or more implementations (such as an implementation where the display has a fixed native refresh rate), the display may have a native refresh rate of X Hz, and frames may be presented at any 1 / X second heartbeat interval and may remain on the display for at least 1 / X second. In this example, for all Y that are factors of X, the animation can run smoothly at Y Hz. For example, the factors of 60 are {1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60}. Therefore, on a 60Hz native refresh rate display, the animation can run at a frame rate of 30Hz by skipping every other 60Hz frame, at a frame rate of 20Hz by skipping every two 60Hz frames, and so on. In this example, animations with different frame rates Y can coexist without causing glitches, where Y is a factor of X.

[0040] For example, Figure 4 A timing diagram of a 60Hz native refresh rate display with a 1 / 60Hz heartbeat interval is shown, wherein a first animation is set with a 20Hz frame rate, a second animation is provided compatiblely at a 60Hz frame rate, and display frames are compatiblely rendered (e.g., via rendering service 223) for display at various display heartbeat intervals.

[0041] In one or more embodiments, a display such as a variable refresh rate display may have the ability to present frames at any 1 / X second heartbeat interval and to maintain the presented frames on the display for at least two heartbeat intervals. In such an embodiment, since the effective maximum frame rate of the display corresponds to an interval of two heartbeat intervals (e.g., 2 / X seconds), the display may be referred to herein as an X / 2Hz original refresh rate display (e.g., even in one or more embodiments, the current refresh rate of the display may be variable or modifiable from the original (maximum) refresh rate, such as changing to a refresh rate of X / 3Hz, X / 4Hz, X / 5Hz, X / 6Hz, or X / 8Hz).

[0042] For example, Figure 5A timing diagram is shown for a 120Hz native refresh rate display (e.g., a variable refresh rate display) with a heartbeat interval of 1 / 240Hz (4.17ms), where a 120Hz animation is provided and rendered for display at a rate of 120Hz. Figure 5 In the example, the display frame can be presented at any heartbeat interval and can remain on the display for at least two heartbeat intervals. In other words, in this example, the frame can be presented at any 4.17ms heartbeat interval and can remain on the display for 8.33ms. Therefore, in Figure 5 In the examples, the highest frame rate is 120Hz. In one or more specific implementations, lower frame rates can be achieved by rendering a frame every few heartbeat intervals; for example, a 60Hz frame can be rendered every four heartbeat intervals (e.g., 16.67ms in this example), a 40Hz frame can be rendered every six heartbeat intervals (e.g., every 25ms), and so on. In these examples, the frame rate is all factors of 120 (which has an even number of heartbeat intervals), and in some examples, it may be referred to as an "even-quanta" frame rate.

[0043] This example of a 120Hz native refresh rate display allows for “odd-numbered” frame rates (e.g., an 80Hz or 48Hz frame rate that renders a frame every three or five heartbeat intervals), and such “odd-numbered” frame rates can be beneficial in terms of display appearance and power consumption. For example, when switching between a 60Hz and 120Hz frame rate, 80Hz (see example...) Figure 6 48Hz and 80Hz can be used as intermediate frame rates (or vice versa). Using intermediate frame rates during frame rate transitions can improve the visible appearance of animations on the display during those transitions. As another example, 48Hz and 80Hz frame rates can sometimes be used instead of 60Hz and 120Hz frame rates, respectively, to achieve similar display quality with reduced power consumption. For instance, a 48Hz frame rate can be used near the end of a scrolling animation displayed at 60Hz to slow it down, reducing power consumption without affecting the on-screen quality of the scrolling animation. Therefore, 48Hz and 80Hz frame rates not only offer visual quality advantages but also provide power savings that allow more high-visibility use cases to run at 120Hz.

[0044] However, "odd-numbered" frame rates are not only incompatible with each other, but also with "even-numbered" frame rates. This incompatibility can cause frame glitches and uneven frame rhythms when animations are displayed simultaneously, potentially degrading the user experience and overshadowing the benefits of "odd-numbered" frame rates described above. For example, Figure 7An exemplary timing diagram is shown of 120Hz and 80Hz animations existing simultaneously on a display with a raw frame rate of 120Hz and a heartbeat interval of 4.17ms (i.e., 1 / 240Hz).

[0045] exist Figure 7 In the example, a frame should be generated at that specific time whenever the animation needs to be evaluated. However, at time 702, a frame cannot be rendered for the 80Hz animation because the monitor has already displayed frames at 4.17ms intervals before time 700. Therefore, in this example, the 80Hz animation only causes a visual update on the monitor when the frame is displayed at time 704, resulting in a long-short-long-short jittering rhythm instead of a smooth 80Hz animation.

[0046] Depending on one or more specific implementations, frame rate arbitration operations can be performed to provide frame rate compatibility across all animation sources. Frame rate arbitration can help maintain deterministic behavior during transitions between different frame rates. The frame rate arbitration operations described herein can help make “odd-quanta” frame rates available on displays such as Display 225 (e.g., a 120Hz native frame rate display with a 1 / 240Hz heartbeat interval) without causing visual glitches that could degrade the user’s visual experience.

[0047] Figure 8 An exemplary architecture with a frame rate arbitrator, which can be implemented by an electronic device 105, is shown according to one or more specific embodiments of the subject matter. For illustrative purposes, Figure 8 The architecture is described as being composed of Figure 1 The electronic device 105 is implemented, such as by a processor and / or memory of the electronic device; however, the architecture may be implemented by any other electronic device, including electronic device 104, electronic device 110, electronic device 115, and / or server 120. However, not all depicted components are usable in all embodiments, and one or more embodiments may include additional or different components compared to those shown in the figures. Variations in the arrangement and type of these components may be made without departing from the spirit or scope of the claims set forth herein. Additional components, different components, or fewer components may be provided.

[0048] Figure 8 The various parts of the architecture can be implemented in software or hardware, including via one or more processors and a memory device containing instructions that, when executed by the processor, cause the processor to perform the operations described herein. Figure 8 In the example, electronic device 105 includes a frame rate arbitrator 800. Figure 8In the example, the frame rate arbiter 800 is shown as a separate entity from the rendering service 223. However, the frame rate arbiter 800 may be provided as a component of the rendering service 223.

[0049] like Figure 8 As shown, animation sources (such as application 202 and system process 204) may provide frame rate parameters to frame rate arbitrator 800. Frame rate arbitrator 800 may determine a global frame rate based on the frame rate parameters of the animation sources and inform these animation sources of the global frame rate. In one or more embodiments, frame rate arbitrator 800 may also inform rendering service 223 of the global frame rate. In one or more embodiments, rendering service 223 may render display frames and provide the rendered display frames to display 225 at the global frame rate. In one or more embodiments, frame rate arbitrator 800 may also inform display 225 of the global frame rate. In one or more embodiments, display 225 may modify its refresh rate to match the global frame rate from frame rate arbitrator 800.

[0050] The frame rate parameters for each animation may include, for example, a minimum frame rate, a maximum frame rate, and / or a preferred frame rate. The minimum and maximum frame rates may define the frame rate range of the animation source. After the animation source has been informed of the global frame rate, the animation source may provide content (e.g., frames and / or content used to generate frames) to the rendering service 223 at the global frame rate and / or at a compatible frame rate that is a factor of that global frame rate (e.g., an even-numbered factor). For example, for a global frame rate of 120Hz, one or more animation sources may provide 60Hz or 30Hz display frames instead of providing frames at a global frame rate of 120Hz. However, when the global frame rate is 120Hz, it may not be permissible for the animation source to provide frames with odd-numbered factors, such as 80Hz, even if 80Hz is the preferred frame rate for a second animation source.

[0051] In one or more implementations, an animation source (e.g., one or more processes of application 202, system process 204, and / or rendering service 223) may register, update, and / or deregister frame rate parameters (e.g., including frame rate ranges) with frame rate arbitrator 800. Frame rate arbitrator 800 may record registered and / or modified frame rate parameters, and based on all active frame rate parameter registrations, frame rate arbitrator 800 may determine the global frame rate at which rendering service 223 will generate the rendered display frames. The animation source may then receive the global frame rate from frame rate arbitrator 800 and be adapted to a frame rate compatible with the global frame rate.

[0052] An animation source can be a client-driven source (e.g., application 202 and / or system process 204) that relies on timing information from rendering service 223 for generating animation content, or an animation source owned by rendering service 223 itself. For example, a client-driven animation source may require the source (e.g., application 202) to evaluate the state of its animation at each time step indicated by rendering service 223 and submit any changes to the animation at that time step, while an animation source owned by rendering service 223 is entirely managed by that rendering service.

[0053] In one or more implementations, the frame rate parameter of the application source can be determined by the developer of the animation source and can be a fixed parameter. In one or more other implementations, a frame rate arbitration process can also be performed at the client-side source to determine the frame rate parameter of that source. For example, Figure 9 It shows that Figure 8 The frame rate arbiter 800 is implemented as a process that also includes a rendering service 223 of an animation source 910 and provides an example of an additional frame rate arbiter 907 for application 202 and system process 921 (e.g., a system process in system process 204).

[0054] In this example, the frame rate arbiter 907 of application 202 calculates frame rate parameters 900 (e.g., frame rate range, minimum frame rate, maximum frame rate, and / or preferred frame rate) based on timing information 908 of one or more animations generated by application 202. In one or more specific implementations, the preferred frame rate of the animation source may be the same as the minimum frame rate, the same as the maximum frame rate, and / or a frame rate between the minimum and maximum frame rates of the animation (e.g., within the frame rate range). Figure 9 As shown, application 202 can then register, update, and / or deregister frame rate parameters 900 with frame rate arbitrator 800.

[0055] exist Figure 9 In the example, the frame rate arbiter 907 of system process 921 also calculates frame rate parameters 902 (e.g., frame rate range, minimum frame rate, maximum frame rate, and / or preferred frame rate) based on timing information 906 of one or more animations generated by system process 921. Figure 9 As shown, system process 921 can then register, update, and / or deregister frame rate parameters 902 with frame rate arbitrator 800.

[0056] exist Figure 9In the example, the animation source 910 owned by rendering service 223 provides a layer tree 911 describing how rendering service 223 renders the content. In this example, whenever rendering service 223 traverses the layer tree in preparation for rendering, active animations "A" at one or more layers 912 of layer tree 911 can be accumulated, and the additional frame rate arbitrator 907 of the rendering service can generate frame rate parameters 904 (e.g., frame rate range, minimum frame rate, maximum frame rate, and / or preferred frame rate) based on frame rate preferences and / or the animation characteristics of each active animation "A" (e.g., the speed of the moving edges of the animation features).

[0057] like Figure 9 As indicated, the frame rate arbiter 800 may record frame rate parameters from one or more animation sources (e.g., including frame rate parameter 900 from application 202, frame rate parameter 902 from system process 921, and frame rate parameter 904 from animation source 910 of rendering service 223). The recorded frame rate parameters may be stored by the frame rate arbiter 800 (e.g., by rendering service 223) and used to determine the global frame rate. Upon receiving a change in any recorded frame rate parameter from any animation source, the frame rate arbiter 800 may calculate an update to the global frame rate, as follows (e.g., in conjunction with...). Figures 12A to 12H (This is described in further detail.)

[0058] In one or more embodiments, as part of a process for determining the global frame rate based on frame rate parameters 900, 902, and 904, the frame rate arbitrator 800 may convert the recorded frame rate parameters for each animation source into frame interval parameters. The frame interval parameters may be hardware-dependent. For example, for a 120Hz display, a 120Hz frame rate may be converted into a frame interval of 2, with each displayed frame maintaining two heartbeat intervals on that display. In one or more embodiments, a frame interval range may be obtained (e.g., a range between the maximum frame interval corresponding to the minimum frame rate and the minimum frame interval corresponding to the maximum frame rate). In one or more embodiments, the frame rate arbitrator 800 may expand the frame interval range (e.g., by extending the range to accommodate other device and / or display settings or requirements independent of the animation source).

[0059] In one or more embodiments, the frame rate arbiter 800 may classify the frame interval ranges of various animation sources. In one or more embodiments, the frame rate arbiter 800 may perform (e.g., classified) intersections of frame interval ranges until the next intersection in the intersection operation will result in a blank range. In one or more embodiments, the frame rate arbiter 800 may select the minimum frame interval as the global frame interval from the frame interval range generated by the intersection operation (e.g., the last range before the intersection operation that generates the blank range), which matches the preferred frame interval corresponding to one of the recorded frame rate parameters. If none of the animation sources provide a preferred frame rate (and correspondingly, a preferred interval) and / or if the preferred interval is not within the range generated by the intersection, the frame rate arbiter may select the device-preferred frame interval (e.g., in some embodiments, an interval of 4 corresponding to a 60Hz frame rate) as the global frame interval. If the preferred frame interval of the device does not fall within the range of frame intervals generated by the intersection, and the preferred frame rate of the device is greater than the highest interval in that range, then the frame rate arbitrator 800 may select the largest interval in that frame interval range as the global frame interval. In one or more other embodiments, the frame rate arbitrator 800 may select the smaller of the largest interval in the frame interval range and an interval of 5 (in some embodiments, corresponding to a 48Hz frame rate) as the global frame interval.

[0060] In one or more specific implementations, the global frame interval may be shared (e.g., via read-only shared memory) by the frame rate arbitrator 800 with all animation sources (e.g., and / or converted to a global frame rate and shared by that frame rate arbitrator with all animation sources). Once the global frame rate has been assigned, client-driven animation sources can update their frame rate to a compatible frame rate in an upcoming VSYNC session where the application is scheduled to run.

[0061] This update performed by the animation source can be performed differently depending on whether the animation source has specified a preferred frame rate. For example, when the animation source receives a global frame rate, if a preferred frame rate is specified for the animation source, the compatible frame rate selected by the animation source can be a frame rate that is less than the global frame rate, within the animation source's frame rate range (e.g., between the minimum and maximum frame rates), and closest to the preferred frame rate. If the animation source does not have a preferred frame rate, the compatible frame rate selected by the animation source can be a frame rate that is less than the global frame rate, within the animation source's frame rate range (e.g., between the minimum and maximum frame rates), and closest to the global frame rate. In one or more implementations, the server-side animation source, such as the animation source 910 that provides the layer tree 911 to the rendering service 223, can be updated in the same manner when the layer tree traversal is completed before each rendering.

[0062] In one or more implementations, frame rate arbitration can be performed by the frame rate arbitrator 800 at any point in time. However, an animation source can only be updated when it is awakened at its scheduled VSYNC time. Therefore, without exposing the system to, for example, race conditions, the entire system may not be able to instantaneously switch to different frame rates. For example, in a use case where all animation sources are operating at 60Hz and have begun processing frames to be submitted to rendering service 223 at 16.67ms intervals, one animation source may request an update to an 80Hz frame rate. In this exemplary use case, if rendering service 223 will immediately switch to an 80Hz frame rate, some animation sources will aim to serve frames at 16.67ms intervals, and some animations will aim to serve frames at 12.5ms intervals. However, all these frames will be displayed simultaneously, resulting in visual glitches. Figure 10 Another such use case is shown, where a frame rate change occurs immediately. Figure 10 In the example, two animations (e.g., "Animation 1" and "Animation 2") are generating 80Hz frames rendered at 80Hz. Then, at time 1000, Animation 2 provides updated frame rate parameters, resulting in a global frame rate change from 80Hz to 60Hz. Figure 10 As shown, in a use case where the electronic device (e.g., rendering service 223) immediately switches to a new 60Hz global frame rate (e.g., without the frame rate transition scheduling discussed below), only the animation source of animation 2 will be aware of the change and able to act accordingly to target a different heartbeat interval. In this case, animation 1 may have already completed its next frame or a frame previously scheduled to be rendered at time 1002, and for the new timing, there will not be enough time to redo its work, or it may still be in the process of doing its work and unable to change to the new target heartbeat interval. Figure 10 As shown, in this case, the next frame of Animation 1 will appear on the screen one heartbeat interval later than expected, which will produce the effect described above. Figure 7 The incompatible frame rate discussion illustrates a similar undesirable effect.

[0063] Figure 11A and Figure 11B This illustrates another use case where frame rate transitions can cause visual glitches due to the relative phase of the rates before and after the transition. Figure 11A In the example, the frame rate transition from 80Hz to 60Hz occurs at time 1100, which has an unexpected frame length. Figure 11B In the example, the frame rate transition from 80Hz to 60Hz occurs at time 1102, which has a frame length of 60Hz. Figure 11A and Figure 11BIn both cases, even if the animation source can inform the frame rate that it will change before the transition and can provide updated timing for the frames used for display, the phase shift of the frame rate before and after the transition can still cause changes in the blur radius or motion blur width, resulting in something that looks jagged to the human eye.

[0064] Depending on various aspects of the subject matter technology, rendering service 223 may also provide frame rate transition scheduling, wherein frame rate transitions are pre-scheduled to occur at the next VSYNC time. This frame rate transition scheduling can help ensure that animation sources running at the same frame rate as rendering service 223 (e.g., the global frame rate) can rely on previously received timing guarantees in the current frame (e.g., thus resolving the issues discussed above and...). Figure 10 (The immediate transition problem shown). Animation sources running at a frame rate lower than the frame rate of rendering service 223 (e.g., the global frame rate) may receive different frame times during transitions. Frame rate transition scheduling also helps ensure that the phase before and after the transition results in a common VSYNC at the time of the transition (e.g., thus solving the problem of...). Figure 11A and Figure 11B (The problem shown).

[0065] Depending on one or more specific implementations, frame rate transition scheduling may include receiving changes to frame rate parameters from one or more animation sources before the next VSYNC time, and determining and providing the resulting updated global frame to take effect after the next VSYNC time. Figures 12A to 12H A specific implementation of frame rate arbitration utilizing frame rate transition scheduling is shown. Figures 12A to 12H In the example, the current time 1200, which is "now" in the graph, is represented by the time 1200. Figure 12A Advance to Figure 12H A vertical line indicating movement to the right.

[0066] For example, Figure 12A The timing diagram shows two of the animations (“Animation 1” and “Animation 2”) displayed at a frame rate of 80Hz on a monitor with a heartbeat interval of 240Hz. Figure 12BIn this example, both Animation 1 and Animation 2 provide the next 80Hz frame to be displayed at the expected 80Hz frame rate. In this example, the global 80Hz frame rate has been determined (e.g., by the frame rate arbitrator 800) based on the frame rate parameters of Animation 1—a minimum frame rate of 80Hz, a maximum frame rate of 120Hz, and a preferred frame rate of 80Hz—and the frame rate parameters of Animation 2—a minimum frame rate of 60Hz, a maximum frame rate of 80Hz, and no preferred frame rate. In this example, because the preferred 80Hz frame rate of Animation 1 is within the range defined by the minimum 60Hz frame rate and the maximum 80Hz frame rate of Animation 2, the global frame rate can be set to the preferred 80Hz frame rate of Animation 1, and both Animation 1 and Animation 2 can generate frames at the global frame rate.

[0067] like Figure 12C As shown, animation 1 can modify its frame rate parameter to remove the preferred frame rate, and... Figure 12B After rendering the frames, the minimum frame rate is reduced to 60Hz and the maximum frame rate is reduced to 80Hz. In this example, the minimum frame rate (e.g., 60Hz) within the frame rate range of both Animation 1 and Animation 2 can be determined as the new global frame rate. As shown, to provide frame rate transition scheduling, the frame rate transition to the updated global frame rate of 60Hz can be scheduled to occur at the next 80Hz VSYNC time. In this way, before the transition occurs, for the next 80Hz VSYNC time, the 80Hz frames already generated by Animation 1 and Animation 2 can be displayed, as expected by the animation source.

[0068] like Figure 12D and Figure 12E As shown, because the transition doesn't occur until the next 80Hz VSYNC time, the additional frame rate parameter updates and the associated global frame rate updates can happen before the transition takes effect. Figure 12D In the example, Animation 1 provides a new preferred frame rate of 120Hz and increases the minimum and maximum frame rates to 80Hz and 120Hz respectively, and a new updated global frame rate of 120Hz (e.g., the highest preferred frame rate) is determined. As shown, the transition from the current 80Hz frame rate to the new updated global frame rate of 120Hz is scheduled to replace the previous 80Hz to 60Hz transition at the next VSYNC time. Figure 12EIn the example, before scheduling the next VSYNC time for the 80Hz to 120Hz transition, Animation 2 updates its frame rate parameters to provide a common 80Hz frame rate as the preferred and maximum frame rate, and a minimum frame rate of 60Hz. In this example, the higher of the preferred frame rates can be selected as the new global frame rate (e.g., in this example, still 120Hz), and the scheduled transition from 80Hz to 120Hz can be retained for the next VSYNC time.

[0069] like Figure 12F As shown, both Animation 1 and Animation 2 provide upcoming 80Hz frames and display them at the next 80Hz VSYNC time, and at that time are notified of the new global frame rate to be used starting from that VSYNC time.

[0070] In one or more implementations, the frame rate transition timestamp used for scheduling the frame rate transition, as well as the updated global frame rate, may be shared (e.g., via read-only shared memory) with one or more animation sources. When an animation acquires a frame rate transition timestamp, it may selectively use the existing global frame interval or the upcoming updated global frame interval based on that timestamp and depending on the operation of the animation source. In this way, aspects of the subject matter allow for explicitly defining timing calculations for all animation sources before and after the frame rate transition.

[0071] For example, such as Figure 12G and Figure 12H As shown, Animation 1 can generate frames at a new global frame rate of 120Hz and display those frames at a global frame rate of 120Hz, and (for example, because a global frame rate of 120Hz is outside the frame rate range of Animation 2), Animation 2 can generate frames at a compatible frame rate of 60Hz for display every 120Hz VSYNC time interval. As illustrated, the frame rate arbitration operation described herein allows a display with a 240Hz heartbeat interval to support frame rates at both even-numbered and odd-numbered values ​​for the original refresh rate at various times.

[0072] In this way, rendering service 223 and frame rate arbitrator 800 can provide frame rate arbitration operations (which provide frame rate compatibility for multiple simultaneous animations within the display system) and reduce and / or eliminate glitches that may occur at frame rate transition boundaries.

[0073] The two animations (i.e., animation 1 and animation 2) are combined to describe Figures 12A to 12H Examples. It should also be understood that in other examples, one or more additional animations may provide a frame rate parameter and receive and adjust to the updated global frame rate, as in combination with... Figures 12A to 12HAs described above. It should also be understood that, in one or more embodiments, one or more input sources may also provide frame rate parameters to the frame rate arbitrator 800. For example, input sources (such as styluses, touch surfaces or touchscreen electrode arrays, mice, pointers, keyboards, cameras, etc.) may receive input events at a frame rate. In some use cases, the input received by the input source may be associated with displayed content. Therefore, it may be desirable to synchronize input events with displayed content and / or otherwise coordinate input events with displayed content. In one or more embodiments, the input source may provide frame rate parameters (such as preferred frame rate, minimum frame rate, and / or maximum frame rate) to the frame rate arbitrator 800, and the frame rate arbitrator 800 may include frame rate parameters received from the input source during frame rate arbitration, as described herein in conjunction with animation sources. Another process at the frame rate arbitrator and / or electronics 105 may provide the input source with a global frame rate generated by the frame rate arbitration process. In one or more embodiments, the input source may then adjust the input event frame rate to a frame rate compatible with the global frame rate. In one or more specific implementations, such as when the input source cannot generate input events at a frame rate up to the global frame rate, or when the global frame rate is an odd factor of the frame rate at which the input source generates input events, the input source or electronic device 105 may interpolate between input events to generate estimated input events for each frame in which display frames are generated and / or displayed. For example, the input source may generate estimated (interpolated) input events and provide them to electronic device 105, or electronic device 105 may perform interpolation of input events received from the input source and generate estimated input events at electronic device 105.

[0074] Figure 13 A flowchart illustrating an exemplary process for performing display frame rate arbitration according to various aspects of the subject matter is shown. For illustrative purposes, this document primarily refers to... Figure 1 and Figure 8 The process 1300 is described using electronic device 105. However, process 1300 is not limited to... Figure 1 and Figure 8 The electronic device 105, and one or more blocks (or operations) of process 1300 may be performed by components of one or more other suitable devices. The blocks of process 1300 are described herein as occurring sequentially or linearly. However, multiple blocks of process 1300 may occur in parallel. Furthermore, the blocks of process 1300 need not be performed in the order shown, and / or one or more blocks of process 1300 need not be performed and / or may be replaced by other operations.

[0075] exist Figure 13In the example, at block 1302, process 1300 includes (e.g., by an electronic device such as electronic device 104, electronic device 105, electronic device 110, electronic device 115, or another electronic device, component, or system) recording at least a first frame rate parameter of the first animation source. The first frame rate parameter may include at least one of a minimum frame rate, a maximum frame rate, and a preferred frame rate of the first animation source. For example, the first frame rate parameter may be recorded by a frame rate arbitrator (such as frame rate arbitrator 800) of an electronic device as described herein.

[0076] In one or more specific implementations, the first animation source includes a scrolling animation source, and the scrolling animation source determines the first frame rate parameter by: receiving user scrolling input; and applying the user scrolling input to a model (e.g., a human perception model) to obtain the first frame rate parameter. The scrolling animation source may be a system process or an application process that animates scrolling content for display in response to input such as swiping or other scrolling indicators from a user (e.g., via touch input on a touch-sensitive surface or touch-sensitive display using a finger or stylus).

[0077] In one or more specific implementations, the first animation source includes a general (e.g., non-scrolling) animation source, and the general animation source determines the first frame rate parameter by at least determining the maximum rate at which the general animation source can generate frames. For example, the general animation source may be a battery indicator, signal strength indicator, progress indicator, or button function indicator, such as... Figure 3 As shown in the example.

[0078] At block 1304, process 1300 includes determining a global frame rate based on recorded frame rate parameters, which include at least a first frame rate parameter. In one or more embodiments, the recorded frame rate parameters include the first frame rate parameter and a second frame rate parameter for a second animation source displayed simultaneously with the first animation source. In one or more embodiments, the first frame rate parameter may include a minimum frame rate, a maximum frame rate, and a preferred frame rate of the first animation source, and the second frame rate parameter may include the minimum frame rate, the maximum frame rate, and the preferred frame rate of the second animation source.

[0079] At box 1306, process 1300 includes informing at least a first animation source of the determined global frame rate (e.g., as described above in conjunction with...). Figure 8 In one or more specific embodiments, determining the global frame rate includes setting the global frame rate to the higher of a preferred frame rate for the first animation source and a preferred frame rate for the second animation source (e.g., as described above in conjunction with...). Figure 12E(Discussed). In one or more specific implementations, determining the global frame rate includes setting the global frame rate to the higher of the minimum frame rate of the first animation source and the minimum frame rate of the second animation source (e.g., as discussed above). Figure 12C (Discussed).

[0080] In one or more specific embodiments, process 1300 may further include: after determining the global frame rate: receiving an update to a second frame rate parameter to remove the preferred frame rate from the second frame rate parameter; and modifying the global frame rate in response to the update (e.g., as described above). Figure 12C (Discussed). In one or more specific implementations, the minimum frame rate, maximum frame rate, and preferred frame rate of the second animation source are common frame rates, and determining the global frame rate includes setting that global frame rate as the common frame rate.

[0081] In one or more embodiments, process 1300 may further include informing a second animation source of the global frame rate. In one or more embodiments, process 1300 may further include operating the display at the global frame rate. In one or more other embodiments, the display may operate at a frame rate other than the global frame rate (e.g., the display may override the global frame rate due to hardware and / or other display settings, conditions, and / or content). In one or more embodiments, process 1300 may further include receiving frames from a first animation source at the global frame rate; and receiving frames from a second animation source at a frame rate different from and a factor of the global frame rate (e.g., as described above). Figure 12G and 12H (Discussed).

[0082] As discussed herein, the frame rate arbitration operation may also include arbitrating frame rate parameters of an input source (e.g., a touch-sensitive element of a touchscreen or other touch-sensitive surface, input signals from a stylus, mouse, keyboard, camera, or any other input source). For example, process 1300 may also include recording at least a second frame rate parameter of a first input source. The second frame rate parameter includes at least one of a minimum frame rate, a maximum frame rate, and a preferred frame rate of the first input source. In one or more embodiments, process 1300 may also include informing at least the first input source of the determined global frame rate.

[0083] In one or more embodiments, process 1300 may further include interpolating input events of a first input source based on a determined global frame rate. For example, the input source may receive input frames (e.g., touch input) at an input frame rate (such as 120Hz (as an example)). In one or more embodiments, the input frame rate may not be aligned with the current global frame rate of the animation and / or the current refresh rate of the display. For example, for a display with a variable refresh rate and a maximum refresh rate of 120Hz, and in an example of an input source providing input events at an input frame rate of 120Hz, if the global frame rate is set to an odd-numbered frame rate (such as 80Hz), the electronic device 105 or the input device may interpolate between a number of 120Hz touch input events to generate an estimated (interpolated) touch input event for each 80Hz display frame. For example, for a display operating at a refresh rate of 240Hz, and in an example where the input source provides input events at an input frame rate of 120Hz, the electronic device can interpolate between 120Hz touch input events to generate interpolated input events at a 240Hz frame rate that matches the display's current refresh rate of 240Hz.

[0084] In one or more specific implementations, the recorded frame rate parameters may include a first frame rate parameter, a second frame rate parameter, and a third frame rate parameter, wherein the second frame rate parameter and the third frame rate parameter each correspond to a corresponding animation within a single-level tree of the second animation source (e.g., as described above). Figure 9 The above).

[0085] Figure 14 Exemplary computing devices are shown that can be used to implement aspects of the subject matter technology according to one or more specific embodiments. Computing device 1400 may be any computing device or server for generating the features and processes described above and / or may be part of any computing device or server for generating the features and processes described above, including but not limited to laptop computers, smartphones, tablet devices, wearable devices such as goggles or glasses, etc. Computing device 1400 may include various types of computer-readable media and interfaces for various other types of computer-readable media. Computing device 1400 includes persistent storage device 1402, system memory 1404 (and / or buffers), input device interface 1406, output device interface 1408, bus 1410, ROM 1412, one or more processing units 1414, one or more network interfaces 1416, and / or subsets and variations thereof.

[0086] Bus 1410 generally represents all system, peripheral, and chipset buses that communicatively connect a number of internal devices of computing device 1400. In one or more embodiments, bus 1410 communicatively connects one or more processing units 1414 to ROM 1412, system memory 1404, and persistent storage device 1402. One or more processing units 1414 retrieve instructions to be executed and data to be processed from these various memory units in order to perform the processes disclosed in this subject matter. In different embodiments, one or more processing units 1414 may be a single processor or a multi-core processor.

[0087] ROM 1412 stores static data and instructions required by one or more processing units 1414 and other modules of computing device 1400. On the other hand, persistent storage device 1402 can be a read-write memory device. Persistent storage device 1402 can be a non-volatile memory cell that stores instructions and data even when computing device 1400 is turned off. In one or more embodiments, mass storage devices (such as disks or optical discs and their corresponding disk drives) can be used as persistent storage device 1402.

[0088] In one or more embodiments, a removable storage device (such as a floppy disk, flash drive, and its corresponding disk drive) may be used as persistent storage device 1402. Like persistent storage device 1402, system memory 1404 may be a read-write memory device. However, unlike persistent storage device 1402, system memory 1404 may be volatile read-write memory, such as random access memory. System memory 1404 may store any instructions and data that one or more processing units 1414 may need during operation. In one or more embodiments, the processes disclosed in this subject matter are stored in system memory 1404, persistent storage device 1402, and / or ROM 1412. One or more processing units 1414 retrieve instructions to be executed and data to be processed from these various memory units to execute the processes of one or more embodiments.

[0089] Bus 1410 is also connected to input device interface 1406 and output device interface 1408. Input device interface 1406 enables a user to transmit information and select commands to computing device 1400. Input devices that can be used with input device interface 1406 may include, for example, an alphanumeric keypad and pointing devices (also known as "cursor control devices"). Output device interface 1408 may, for example, enable the display of images generated by computing device 1400. Output devices that can be used with output device interface 1408 may include, for example, printers and display devices such as liquid crystal displays (LCDs), light-emitting diode (LED) displays, organic light-emitting diode (OLED) displays, flexible displays, flat panel displays, solid-state displays, projectors, or any other device for outputting information.

[0090] One or more embodiments may include a device that acts as both an input device and an output device, such as a touchscreen. In these embodiments, the feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, voice, or tactile input.

[0091] Finally, as Figure 14 As shown, bus 1410 also couples computing device 1400 to one or more networks and / or one or more network nodes via one or more network interfaces 1416. In this way, computing device 1400 may be part of a computer network (such as a LAN, wide area network (“WAN”), or intranet), or may be part of a network of networks (such as the Internet). Any or all components of computing device 1400 may be used in conjunction with the disclosure of this subject matter.

[0092] The embodiments within the scope of this disclosure may be implemented, in whole or in part, using a tangible computer-readable storage medium (or multiple tangible computer-readable storage media of one or more types) on which one or more instructions are written. The tangible computer-readable storage medium may also be substantially non-transitory.

[0093] Computer-readable storage media can be any storage medium that can be read, written, or otherwise accessed by general-purpose or special-purpose computing devices, including any processing electronics and / or processing circuits capable of executing instructions. For example, without limitation, computer-readable media can include any volatile semiconductor memory, such as RAM, DRAM, SRAM, T-RAM, Z-RAM, and TTRAM. Computer-readable media can also include any non-volatile semiconductor memory, such as ROM, PROM, EPROM, EEPROM, NVRAM, flash memory, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM, NRAM, track memory, FJG, and Millipede memory.

[0094] Furthermore, computer-readable storage media may include any non-semiconductor memory, such as optical disc storage devices, magnetic disk storage devices, magnetic tape, other magnetic storage devices, or any other medium capable of storing one or more instructions. In one or more embodiments, the tangible computer-readable storage medium may be directly coupled to a computing device, while in other embodiments, the tangible computer-readable storage medium may be indirectly coupled to a computing device, for example, via one or more wired connections, one or more wireless connections, or any combination thereof.

[0095] Instructions can be directly executable or can be used to develop executable instructions. For example, instructions can be implemented as executable or non-executable machine code, or as high-level language instructions that can be compiled to produce executable or non-executable machine code. Furthermore, instructions can also be implemented as data, or may include data. Computer executable instructions can also be organized in any format, including routines, subroutines, programs, data structures, objects, modules, applications, applets, functions, etc. As those skilled in the art will recognize, details including, but not limited to, the number, structure, sequence, and organization of instructions can vary significantly without altering the underlying logic, functionality, processing, and output.

[0096] While the above discussion primarily concerns microprocessors or multi-core processors that execute software, one or more specific implementations are executed by one or more integrated circuits such as ASICs or FPGAs. In one or more specific implementations, such integrated circuits execute instructions stored on the circuit itself.

[0097] Those skilled in the art will recognize that the various exemplary blocks, modules, elements, components, methods, and algorithms described herein can be implemented as electronic hardware, computer software, or a combination of both. To illustrate this interchangeability between hardware and software, the various exemplary blocks, modules, elements, components, methods, and algorithms have been generally described above in terms of functionality. Whether such functionality is implemented as hardware or software depends on the specific application and the design constraints imposed on the overall system. Those skilled in the art can implement the described functionality in different ways for each specific application. Various components and blocks can be arranged differently (e.g., in different orders or divided in different ways) without departing from the scope of the subject matter.

[0098] It should be understood that the specific order or hierarchical structure of the blocks in the process disclosed in this invention is an example of an exemplary method. Based on design preferences, it should be understood that the specific order or hierarchical structure of the blocks in the process may be rearranged or all illustrated blocks may be executed. Any block within these blocks may be executed simultaneously. In one or more embodiments, multitasking and parallel processing may be advantageous. Furthermore, the division of the various system components in the embodiments described above should not be construed as requiring such division in all embodiments, and it should be understood that the program components (e.g., computer program products) and the system may generally be integrated together in a single software product or packaged into multiple software products.

[0099] As used in this specification and any claim of this patent application, the terms "base station," "receiver," "computer," "server," "processor," and "memory" refer to electronic devices or other technical devices. These terms exclude persons or groups of persons. For the purposes of this specification, the terms "display" or "being displayed" mean displaying on an electronic device.

[0100] As used herein, the phrase "at least one of" following a series of items separated by the terms "and" or "or" modifies the list as a whole, not each member of the list (i.e., each item). The phrase "at least one of" does not require selection of at least one of each of the listed items; rather, it allows for the inclusion of at least one of any one item and / or at least one of any combination of items and / or at least one of each item. For example, the phrases "at least one of A, B, and C" or "at least one of A, B, or C" respectively refer to only A, only B, or only C; any combination of A, B, and C; and / or at least one of each of A, B, and C.

[0101] The predicates “configured to,” “operable to,” and “programmed to” do not imply any specific tangible or intangible modification to a particular subject but are intended to be used interchangeably. In one or more embodiments, a processor configured to monitor and control operations or components may also mean that the processor is programmed to monitor and control operations or that the processor is operable to monitor and control operations. Similarly, a processor configured to execute code may be interpreted as a processor programmed to execute code or operable to execute code.

[0102] Phrases such as aspect, that aspect, on the other hand, some aspects, one or more aspects, implementation, that implementation, another implementation, some implementations, one or more implementations, implementation scheme, that implementation scheme, another implementation scheme, some implementation schemes, one or more implementation schemes, configuration, that configuration, other configuration, some configurations, one or more configurations, subject matter technology, disclosure, this disclosure, other variations thereof, etc., are for convenience only and do not imply that disclosures involving one or more such phrases are essential to the subject matter technology, nor do they imply that such disclosures apply to all configurations of the subject matter technology. Disclosures involving one or more such phrases may apply to all configurations or one or more configurations. Disclosures involving one or more such phrases may provide one or more examples. Phrases such as aspect or some aspects may refer to one or more aspects, and this applies similarly to the other foregoing phrases.

[0103] The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any embodiment described herein as “exemplary” or “example” is not necessarily to be construed as preferred or superior to other specific embodiments. Furthermore, the terms “comprising,” “having,” etc., as used in the specification or claims, are intended to be inclusive, similar to how “comprising” is interpreted when used as a transitional word in the claims.

[0104] All structural and functional equivalents of elements throughout the various aspects described herein that are known or later become apparent to those skilled in the art are expressly incorporated herein by reference and are intended to be covered by the claims. Furthermore, nothing disclosed herein is intended to be made public, regardless of whether such disclosure is expressly stated in the claims. No claim element should be interpreted in accordance with 35 U.S.SC §112(f) unless the element is expressly stated using the phrase “means for…” or, in the case of a method claim, using the phrase “step for…”.

[0105] The preceding descriptions are provided to enable those skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be apparent to those skilled in the art, and the general principles defined herein may be applied to other aspects. Therefore, this claim is not intended to be limited to the aspects shown herein, but rather to be consistent with the language of the claim, wherein references to elements in singular values ​​are not intended to mean “only one,” but rather “one or more,” unless specifically indicated. Unless otherwise specifically stated, the term “some” means one or more. Male pronouns (e.g., his) include female and neutral (e.g., her and its), and vice versa. Titles and subtitles (if any) are used for convenience only and do not limit the disclosure of this subject matter.

Claims

1. A method comprising: Record at least a first frame rate parameter received from the first animation source, wherein the first frame rate parameter includes at least one of the minimum frame rate, maximum frame rate, and preferred frame rate of the first animation source; Record at least a second frame rate parameter received from the second animation source, wherein the second frame rate parameter includes at least one of the minimum frame rate, maximum frame rate, and preferred frame rate of the second animation source; The global frame rate is determined based on recorded frame rate parameters, which include at least the first frame rate parameter and the second frame rate parameter, wherein the global frame rate provides a compatible frame rate for the first frame rate parameter and the second frame rate parameter. as well as The determined global frame rate is communicated to at least the first animation source and the second animation source.

2. The method of claim 1, wherein the first animation source comprises a scrolling animation source, and wherein the scrolling animation source determines the first frame rate parameter by: Receive user scroll input; and The user scroll input is applied to the model to obtain the first frame rate parameter.

3. The method of claim 1, wherein the first animation source comprises a general animation source, and wherein the general animation source determines the first frame rate parameter by at least determining the maximum rate at which the general animation source can generate frames.

4. The method according to claim 1, wherein the second animation source is used to be displayed simultaneously with the first animation source.

5. The method of claim 1, wherein determining the global frame rate comprises setting the global frame rate to the higher of the preferred frame rate of the first animation source and the preferred frame rate of the second animation source.

6. The method of claim 1, wherein determining the global frame rate comprises setting the global frame rate to the higher of the minimum frame rate of the first animation source and the minimum frame rate of the second animation source.

7. The method according to claim 1, further comprising: After determining the global frame rate: Receive an update to the second frame rate parameter to remove the preferred frame rate from the second frame rate parameter; as well as The global frame rate is modified in response to the update.

8. The method of claim 1, wherein the maximum frame rate and the preferred frame rate of the second animation source are common frame rates, and wherein determining the global frame rate includes setting the global frame rate to the common frame rate.

9. The method according to claim 4, further comprising: The display is operated at a refresh rate corresponding to the global frame rate.

10. The method of claim 9, further comprising: Frames are received from the first animation source at the global frame rate; as well as Frames are received from the second animation source at a frame rate that is different from and is a factor of the global frame rate.

11. The method of claim 1, further comprising recording at least a third frame rate parameter of the first input source, wherein the third frame rate parameter includes at least one of the minimum frame rate, maximum frame rate, and preferred frame rate of the first input source.

12. The method of claim 11, further comprising informing at least the first input source of the determined global frame rate.

13. The method of claim 12, further comprising interpolating the input events of the first input source based on the determined global frame rate.

14. The method of claim 1, wherein the recorded frame rate parameters include the first frame rate parameter, the second frame rate parameter, and the third frame rate parameter, wherein the second frame rate parameter and the third frame rate parameter each correspond to a corresponding animation within a single-layer tree of the second animation source.

15. The method according to claim 1, further comprising: The rendering service is informed of the determined global frame rate, wherein the rendering service renders frames from the first animation source at the global frame rate, and wherein the rendering service renders frames from the second animation source at an even number of times the global frame rate is used.

16. An electronic device comprising: Memory; and One or more processors, said one or more processors being configured to: Record at least a first frame rate parameter received from the first animation source, wherein the first frame rate parameter includes at least one of a minimum frame rate, a maximum frame rate, and a preferred frame rate received from the first animation source; Record at least a second frame rate parameter for the second animation source, wherein the second frame rate parameter includes at least one of a minimum frame rate, a maximum frame rate, and a preferred frame rate for the second animation source; The global frame rate is determined based on recorded frame rate parameters, which include at least the first frame rate parameter and the second frame rate parameter, wherein the global frame rate provides a compatible frame rate for the first frame rate parameter and the second frame rate parameter. as well as The determined global frame rate is communicated to at least the first animation source and the second animation source.

17. The electronic device of claim 16, wherein the first animation source comprises a scrolling animation source, and wherein the scrolling animation source is configured to determine the first frame rate parameter by: Receive user scroll input; and The user scroll input is applied to the model to obtain the first frame rate parameter.

18. The electronic device of claim 16, wherein the first animation source comprises a general animation source, and wherein the general animation source is configured to determine the first frame rate parameter by at least determining the maximum rate at which the general animation source can generate frames.

19. The electronic device of claim 16, wherein the second animation source is used to be displayed simultaneously with the first animation source.

20. A non-transitory machine-readable medium storing instructions, said instructions, when executed by one or more processors, causing said one or more processors to perform operations including: Record at least a first frame rate parameter received from the first animation source, wherein the first frame rate parameter includes at least one of the minimum frame rate, maximum frame rate, and preferred frame rate of the first animation source; Record at least a second frame rate parameter received from the second animation source, wherein the second frame rate parameter includes at least one of the minimum frame rate, maximum frame rate, and preferred frame rate of the second animation source; The global frame rate is determined based on recorded frame rate parameters, which include at least the first frame rate parameter and the second frame rate parameter, wherein the global frame rate provides a compatible frame rate for the first frame rate parameter and the second frame rate parameter. as well as The determined global frame rate is communicated to at least the first animation source and the second animation source.

Citation Information

Patent Citations

  • Controlling animation frame rate of applications

    US20110096077A1

  • System and method for dynamically optimizing map tile quality and detail

    US20160335743A1