Devices and methods for selective display frame fetch
Selective fetch panel self-refresh techniques in computing devices address memory and bandwidth issues by focusing on dirty regions and data compression, enhancing battery life through reduced power consumption.
Patent Information
- Application Number
- KR1020250000432
- Authority / Receiving Office
- KR · KR
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2018-04-02
- Filing Date
- 2025-01-02
- Publication Date
- 2026-11-03
- Estimated Expiration
- 2039-02-27
AI Technical Summary
Existing computing devices face challenges in reducing memory usage, communication bandwidth utilization, and execution times for web browsing and productivity applications, leading to high power consumption.
Implementing selective fetch panel self-refresh techniques that involve a display engine receiving rendered frames and identifying dirty regions, filling the display buffer only with these regions, and scanning them out to the display, combined with data compression and adaptive contrast/backlight enhancement to reduce bandwidth and power consumption.
This approach reduces display buffer usage, read/write bandwidth, and execution time, leading to lower power consumption and improved battery life in computing devices.
Smart Images

Figure 112025000448760-PAT00001_ABST
Abstract
Description
Background Technology
[0001] Web browsing and productivity applications, such as word processing, spreadsheet, and presentation applications, are some of the most common use cases on computing devices such as desktop personal computers (PCs), laptop PCs, tablet PCs, and smartphones. Efforts are ongoing to reduce performance for browsing, productivity applications, movie streaming, and other related high-usage tasks in order to improve the user experience by increasing Hours of Battery Life (HoBL) on such portable computing devices. Therefore, there is a continuing need to reduce memory usage, decrease communication bandwidth utilization, and shorten execution times to achieve lower power consumption across a multitude of different types of computing devices. Brief explanation of the drawing
[0002] The features and advantages of the present disclosure will become apparent from the detailed description taken together with the following accompanying drawings, which illustrate the features of the present disclosure by example. FIG. 1 is a block diagram illustrating a processing unit according to an example. Figure 2 is a flowchart illustrating a method for buffering display frames according to an example. Figure 3 is a flowchart illustrating a method for buffering display frames according to an example. FIG. 4 is a block diagram illustrating a computing device according to an example. FIG. 5 is a block diagram illustrating a computing device according to an example. Specific details for implementing the invention
[0003] Before technical embodiments are described, it should be understood that, as will be recognized by those skilled in the art, the present disclosure is not limited to the specific structures, process steps, or materials disclosed herein, but extends to their equivalents. It should also be understood that the terms adopted herein are not intended to be limiting but are used merely to describe specific examples or embodiments. Identical reference numbers in different drawings represent identical elements. Numbers provided in flowcharts and processes are provided for clarity in illustrating steps and operations and do not necessarily indicate a specific order or sequence.
[0004] Furthermore, the described features, structures, or characteristics may be combined in any suitable manner in one or more embodiments. In the following description, numerous specific details, such as examples of layouts, distances, network examples, etc., are provided to provide a complete understanding of the various technical embodiments. However, those skilled in the art will recognize that such detailed embodiments do not limit the overall inventive concepts expressed herein but are merely representative thereof.
[0005] As used in this written description, singular forms (“a,” “an,” and “the”) imply explicit support for multiple referents unless the context clearly indicates otherwise. Thus, for example, a reference to “a single (an) engine” implies multiple such engines.
[0006] Throughout this specification, references to "examples" mean that a specific feature, structure, or characteristic described in relation to such examples is included in at least one embodiment of the invention. Accordingly, appearances of phrases such as "in examples" or "in embodiments" in various places throughout this specification do not necessarily refer to the same embodiment.
[0007] As used herein, a plurality of items, structural elements, compositional elements, and / or materials may be presented as a common list for convenience. However, such lists should be interpreted as if each member of the list were individually identified as a distinct and unique member. Accordingly, no individual member of such a list should be interpreted as substantially equivalent to any other member of the same list based solely on their presentation in a common group, unless otherwise indicated. Furthermore, various embodiments and examples of the invention may be mentioned herein along with alternatives for their various components. Such embodiments, examples, and alternatives should not be interpreted as substantially equivalent to one another and should be understood as distinct and autonomous representations under the present disclosure.
[0008] Furthermore, the described features, structures, or characteristics may be combined in any suitable manner in one or more embodiments. In the following description, numerous specific details, such as examples of layouts, distances, network examples, etc., are provided to provide a complete understanding of the embodiments of the invention. However, those skilled in the art will recognize that the invention may be practiced without one or more of such specific details, or with other methods, components, layouts, etc. In other cases, well-known structures, materials, or operations are not illustrated or described in detail to avoid obscuring the aspects of the disclosure.
[0009] In this disclosure, terms such as “comprises,” “comprising,” “containing,” and “having” may have the meanings assigned to them under U.S. patent law, may mean “includes,” “including,” etc., and are generally interpreted as open terms. Terms such as “consisting of” or “consists of” are closed terms and include not only the components, structures, steps, etc. specifically enumerated with such terms, but also those under U.S. patent law. “Consisting essentially of” or “consists essentially of” have the meanings generally assigned to them by U.S. patent law. In particular, such terms are generally closed terms, except to allow the inclusion of additional items, materials, components, steps, or elements that do not substantially affect the basic and novel characteristics or functions of the item(s) used in connection therewith. For example, if trace elements are present in the composition but do not affect the properties or characteristics of the composition, they may be permissible under the expression “essentially composed of” (even if not explicitly stated in the list of items following such a term). When using open-ended terms in this written description, such as “comprising” or “including,” it is understood that direct support must be provided for the expression “essentially composed of” as well as for the expression “composed of”, as if explicitly stated, and vice versa.
[0010] In the detailed description and claims, terms such as “first,” “second,” “third,” “fourth,” etc., are used to distinguish similar elements, if any, and are not intended to describe a specific sequential or chronological order. Any terms used in this manner are interchangeable under appropriate circumstances, and it should be understood that the embodiments described herein may operate in sequences different from those exemplified or otherwise described herein. Similarly, if a method is described herein as comprising a series of steps, the order of such steps presented herein is not necessarily the only order in which such steps may be performed, and certain of the mentioned steps may be omitted and / or certain other steps not described herein may be added to the method.
[0011] Comparative terms used herein, such as “increased,” “reduced,” “better,” “worse,” “higher,” “lower,” “improved,” “minimized,” “maximized,” “increased,” “reduced,” etc., refer to attributes of a device, component, function, or activity that are measurably different from other devices, components, or activities compared to related or similar processes or functions, or known technology, in a surrounding or adjacent area, in a single device or in a number of comparable devices, in a group or class, in a number of groups or classes. For example, a data area having an “increased” risk of damage may refer to an area of a memory device that is more likely to have write errors thereto than other areas within the same memory device. A number of factors, including location, manufacturing process, the number of program pulses applied to that area, etc., may cause such an increased risk.
[0012] As used herein, "flip" generally refers to an indication that a new composition occurs. For example, "flip" may be an indication to a display controller that it needs to switch to a newly rendered buffer. In a more general sense, "flip" may be any indication that a displayed buffer is being updated. The term "flip" is generally known in video rendering, and its meaning will be understood by those skilled in the art.
[0013] As used herein, the term “substantially” refers to the scale or degree of complete or nearly complete action, characteristic, property, state, structure, item, or result. For example, a substantially enclosed object would mean that the object is either completely enclosed or nearly completely enclosed. The exact acceptable degree of deviation from absolute completeness will depend on the specific context in some cases. However, generally speaking, a proximity to completeness would result in an overall identical outcome as if absolute and total completeness had been achieved. The use of “substantially” is equally applicable even when used with a negative connotation to refer to a complete or nearly complete lack of action, characteristic, property, state, structure, item, or result. For example, a composition “substantially lacking” of particles would be either completely lacking of particles or nearly completely lacking of particles such that the effect is identical to that of completely lacking particles. In other words, a composition “substantially lacking” of a component or element may still actually contain such an item, provided there is no measurable effect thereof.
[0014] As used herein, the term “approx.” is used to provide flexibility to numeric range endpoints by specifying that a given value may be “slightly above” or “slightly below” an endpoint. However, it should be understood that even when the term “approx.” is used herein in relation to a specific numeric value, corresponding support for the exact numeric value described without the term “approx.” is also provided.
[0015] As used herein, the term “combined” is defined as being connected directly or indirectly by electrical or non-electrical means. Items or objects that are “directly combined” are in physical contact and attached to one another. Objects or elements described herein as being “adjacent” to one another may be in physical contact with one another, be in very close proximity to one another, or be in the same general area or zone, appropriate to the context in which the phrase is used.
[0016] Numerical quantities and data may be expressed or presented in this specification in the form of ranges. It should be understood that such range formats are used merely for convenience and brevity and are therefore not intended to include only the numerical values explicitly stated as limits of the range, but should be flexibly interpreted to include all individual numerical values or sub-ranges included within the range, as if each numerical value and sub-range were explicitly stated. For example, the numerical range "about 1 to about 5" should be interpreted not to include only the explicitly stated values from about 1 to about 5, but also to include individual values and sub-ranges within the indicated range. Accordingly, such numerical ranges include, individually, 1, 1.5, 2, 2.3, 3, 3.8, 4, 4.6, 5, and 5.1, as well as individual values such as 2, 3, and 4, and sub-ranges such as 1 to 3, 2 to 4, and 3 to 5.
[0017] This same principle applies to ranges in which only a single numerical value is specified as a minimum or maximum. Furthermore, such interpretation must be applied regardless of the range or the breadth of the characteristics being described.
[0018] As used herein, the term “circuit” may refer to, be part of, or include application-specific integrated circuits (ASICs) executing one or more software or firmware programs, electronic circuits, processors (shared, dedicated, or grouped) and / or memory (shared, dedicated, or grouped), combinational logic circuits, and / or other suitable hardware components providing the described functionality. In some embodiments, the circuit may be implemented by one or more software or firmware modules, or functions associated with the circuit may be implemented by them. In some embodiments, the circuit may include logic that is at least partially operable in hardware.
[0019] Various techniques, or specific modes or parts thereof, may take the form of program code (i.e., instructions) implemented on tangible media such as floppy diskettes, CD-ROMs (compact disc-read-only memory), hard drives, non-transient computer-readable storage media, or any other machine-readable storage media, and when the program code is loaded into a machine such as a computer and executed by it, the machine becomes a device for implementing the various techniques. The circuit may include hardware, firmware, program code, executable code, computer instructions, and / or software. A non-transient computer-readable storage medium may be a computer-readable storage medium that does not contain signals. In the case of program code execution on programmable computers, the computing device may include a processor, a storage medium readable by the processor (including volatile and non-volatile memory and / or storage elements), at least one input device, and at least one output device. Volatile and non-volatile memory and / or storage elements may be random-access memory (RAM), erasable programmable read-only memory (EPROM), flash drives, optical drives, magnetic hard drives, solid-state drives, or other media for storing electronic data. Nodes and wireless devices may also include transceiver modules (i.e., transceivers), counter modules (i.e., counters), processing modules (i.e., processors), and / or clock modules (i.e., clocks) or timer modules (i.e., timers). One or more programs capable of implementing or utilizing the various techniques described herein may use application programming interfaces (APIs), reusable controls, etc. Such programs may be implemented in high-level procedures or object-oriented programming languages to communicate with computer systems.However, the program(s) may be implemented in assembly or machine language if desired. In either case, the language may be a compiled or interpreted language and may be combined with hardware implementations.
[0020] As used herein, the term “processor” may include general-purpose processors, specialized processors such as a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), a microcontroller (MCU), an embedded controller (EC), a field programmable gate array (FPGA), or other types of specialized processors, as well as baseband processors used in transceivers to transmit, receive, and process wireless communications.
[0021] It should be understood that many of the functional units described herein may be referred to as modules to further emphasize their implementation independence. For example, a module may be implemented as a hardware circuit comprising custom very-large-scale integration (VLSI) circuits or off-the-shelf semiconductors such as gate arrays, logic chips, transistors, or other discrete components. A module may also be implemented as a programmable hardware device such as field-programmable gate arrays, programmable array logic, programmable logic devices, etc.
[0022] Modules may also be implemented in software for execution by various types of processors. An identified module of executable code may comprise one or more physical or logical blocks of computer instructions that can be organized, for example, as objects, procedures, or functions. Nevertheless, the executable files of the identified module may not be physically located together and may contain heterogeneous instructions stored in different locations that, when logically combined, contain the module and achieve the stated purpose for the module.
[0023] In effect, a module of executable code may be a single instruction or multiple instructions, and may even be distributed across several different code segments, between different programs, and across several memory devices. Similarly, operational data may be identified and exemplified within the modules herein, implemented in any suitable form, and organized within any suitable type of data structure. Operational data may be collected as a single data set, distributed across different locations including distributed across different storage devices, and may exist at least partially as merely electronic signals on a system or network. The modules may be passive or active, including agents operable to perform desired functions.
[0024] Exemplary embodiments
[0025] An initial overview of technical embodiments is provided below, after which specific technical embodiments are described in more detail later. This initial summary is intended to help readers understand the technology more quickly, not to identify the core or essential features of the technology, nor to limit the scope of the claimed subject matter.
[0026] Aspects of the present technology relate to selective fetch panel self-refresh techniques. One or more display engines of a computing device may be configured to receive or fetch rendered display frames. The display engine may also receive indications of dirty regions of new frames or determine dirty regions within new frames. Dirty regions are one or more parts of a new frame of image data that have been modified for one or more previous frames. A display buffer may be filled by the display engine with only the dirty regions of new frames. The display engine may then scan out the dirty regions of frames from the display buffer to one or more displays. The display engine may also, from time to time, be configured to fill the display buffer with one or more complete frames and scan the complete frames from the display buffer for presentation on one or more displays. The selective filling and scanning out of the dirty parts of frames by the display engine reduces display buffer usage, reduces read and write bandwidth usage, and shortens the execution time of the display engine. Techniques for selectively filling and scanning out dirty parts of frames can be combined with other techniques for compressing frame data, adaptive contrast and backlight enhancement, reducing display buffer usage, reducing read and write bandwidth usage, and shortening the execution time of the display engine.
[0027] FIG. 1 illustrates a processing unit according to an exemplary embodiment. The processing unit may be a central processing unit (CPU), a graphics processing unit (GPU), or other similar processing unit. In some embodiments, the processing unit (100) may include one or more rendering engines (110), one or more display engines (120), one or more display buffers (130), and a number of other functional modules. Other functional modules of the processing unit (100) are not necessary for understanding the embodiments of the present technology and are therefore not to be described further in this specification (as they will be readily recognized by a person skilled in the art). The processing unit (100) may be configured to execute computing device executable instructions stored on one or more computing device readable media to implement an operating system (OS) (140) and one or more other applications (150). One or more other applications (150) are not necessary for understanding the embodiments of the present technology and are therefore not to be described further in this specification. The OS (140) may be configured to control the execution of one or more other applications (150) and to control functions performed by one or more rendering engines (110), one or more display engines (120) and one or more display buffers (130).
[0028] In some embodiments, the display engine (120) may be configured to receive a new frame indication from the rendering engine (110) or the OS (140). The display engine (120) may be further configured to determine one or more dirty areas of the new frame. In one embodiment, determining one or more dirty areas may include receiving a indication of one or more dirty areas from the rendering engine (110) or the OS (140). In another embodiment, the display engine (120) may generate flips of a number of planes of the new frame. The display engine (120) may then determine which of the number of planes contains one or more dirty areas based on which plane is flipped or not flipped. In yet another embodiment, the display engine (120) may determine whether the new frame indication includes a indication of a flip event. The display engine (120) may then determine one or more dirty areas of the new frame based on the flip event.
[0029] In embodiments, the display engine (120) may be further configured to charge the display buffer (130) with one or more dirty regions of a new frame. The display engine (120) may also be further configured to scan out one or more dirty regions of a new frame from the display buffer (130) to the display port. In contrast, typical display engines receive new frames, charge the display buffer with the entire new frame, and scan out the entire new frame from the display buffer to the display. According to a Panel Self-Refresh (PSR) implementation, the display engine may be configured to charge the display buffer and scan out the new frame to the display when the new frame contains an update, rather than cycling through a charge and scan-out process for all frames. PSR advantageously reduces bandwidth utilization by charging and scanning out only when the new frame contains an update. In a PSR2 implementation, the display engine may be configured to detect frame updates and scan out the dirty regions of the new frame rather than the complete frame. Accordingly, PSR2 achieves further reductions in bandwidth utilization by scanning out only the portions of the new frame containing updates. Some embodiments of the present invention achieve a reduction in bandwidth utilization and, consequently, a reduction in power consumption by filling the display buffer and scanning out only the portions of the new frame containing updates from the display buffer. Additionally, embodiments of the present invention reduce power consumption by reducing memory usage because only the portions of the new frame containing updates are stored in the display buffer. Furthermore, execution time is reduced because a smaller portion of the new frame is processed by the display engine.
[0030] In some embodiments, a new frame, one or more dirty regions of the new frame within the display buffer (130), and / or one or more dirty regions of the new frame scanned out from the display buffer (130) may be compressed. In one embodiment, end-to-end compression of frame data may also reduce bandwidth utilization on the communication interface and thus reduce power consumption. In another embodiment, the new frame and / or one or more dirty regions of the new frame may be compressed when scanned out from the frame buffer. Data compression combined with optional charge and scan-out advantageously achieves further power savings. Even when a small percentage of the screen changes, compression provides additional power savings in addition to the optional charge and scan-out features of embodiments of the present technology.
[0031] In various embodiments, the display engine (120) may be configured to fill the display buffer (130) with a complete frame when a new frame does not contain one or more dirty areas. Additionally, the display engine (120) may be configured to fill the display buffer (130) with a complete frame when a new frame is received after a predetermined timeout period has expired, even if it contains one or more dirty areas. In other cases, the display engine (120) may be configured to fill the display buffer (130) with a complete new frame when a new frame is received after a predetermined number of other new frames, even if it contains one or more dirty areas.
[0032] In certain embodiments, the display engine (120) may be configured to determine whether adaptive contrast and backlight enhancement can be enabled when a new frame is received after the timeout period has expired. Alternatively, the display engine may determine whether adaptive contrast and backlight enhancement can be enabled when a new frame is received after a predetermined number of frames. Adaptive contrast and backlight enhancement can enable control of the display's backlighting to reduce the brightness of the screen and thus reduce power consumption. Adaptive contrast and backlight enhancement can be applied to frame areas larger than partial updates of one or more dirty areas. In such cases, adaptive contrast and backlight enhancement may not be able to calculate adjustments when activated when a new frame is received after a predetermined number of frames, or when used in conjunction with storing and scanning out one or more dirty areas instead of a new frame. In such cases, adaptive contrast and backlight enhancement may be set when it is determined that adaptive contrast and backlight enhancement can be enabled / activated. The display engine (120) may use a set of logic or algorithms to analyze the frame and change the luminance values of the pixels while reducing the brightness of the backlight so that the illumination perceived by the user is substantially the same. When the current frame and the new frame output on the display are substantially different, new luminance values for the pixels and brightness for the backlight may be calculated. The display engine (120) may be further configured to disable adaptive contrast and backlight enhancement when the gamma curve is in a linear mode when a flip completion event (e.g., a presentation completion event) is determined to be displayed.Adaptive contrast and backlight enhancement may also be disabled if the gamma curve is in linear mode before the timeout period expires. Adaptive contrast and backlight enhancement may also be disabled if the gamma curve is in linear mode when the count of new frames is less than a specified frame count. Accordingly, embodiments of the present technology can advantageously keep adaptive contrast and backlight enhancement enabled to maintain power savings from adaptive contrast and backlight enhancement.
[0033] FIG. 2 illustrates a method for buffering display frames according to an example. In some embodiments, a new frame indication may be received or fetched from a rendering engine or operating system (210). One or more dirty regions of the new frame may be determined (220). In one implementation, determining one or more dirty regions of the new frame may include receiving a indication of one or more dirty regions from a rendering engine or operating system. For example, the operating system may continue to track dirty primitives (e.g., rectangles or triangles) within the new frame that have been changed or updated relative to the previous frame. When the operating system provides a new frame indication, it may provide an indication of the number of dirty primitives along with the coordinates of the dirty primitives. In another implementation, the new frame indication may include an indication of a flip event. The dirty regions may, in such cases, be determined based on the flip event. In another implementation, determining the dirty regions may include generating flips of a number of planes of the new frame. After that, it can be determined which of the multiple planes includes one or more dirty regions based on whether a plane is flipped or not.
[0034] In various embodiments, the display buffer may be filled with one or more dirty areas of a new frame (230). One or more dirty areas of a new frame may be scanned out from the display buffer to the display port (240). The process of filling the display buffer with only dirty areas and scanning out the dirty areas from the display buffer to the display port may be time-sensitive. Therefore, the filling and scan-out operations may be performed within a specified time limit to avoid the occurrence of visual artifacts on the display.
[0035] In some embodiments, the data of the new frame and one or more dirty regions of the new frame may be encoded in a compressed format to fill the display buffer and scan out from it.
[0036] In various embodiments, adaptive contrast and backlight enhancement may be disabled when the gamma curve is in linear mode when the flip completion event indication is determined. In one implementation, when the gamma curve is in linear mode, no correction is applied, and thus adaptive contrast and backlight enhancement may be disabled for partial frame updates. If the gamma curve is in linear mode before the timeout period expires, adaptive contrast and backlight enhancement may also be disabled. After the timeout period expires, the next new frame may be checked to determine whether the content has changed to possibly update adaptive contrast and backlight enhancement. If the gamma curve is in linear mode when a new frame is received within a predetermined number of frames, adaptive contrast and backlight enhancement may also be disabled. After a predetermined number of frames have been received, the next new frame may be checked to determine whether the content has changed to possibly update adaptive contrast and backlight enhancement. Periodically checking frames after a timeout or a predetermined number of frames can be used to generate a histogram. Additionally, the timeout period or the number of frames can be dynamically adjusted based on scene brightness and / or the amount of updated screen. Thus, embodiments of the present technology can advantageously keep adaptive contrast and backlight enhancement enabled to maintain power savings from adaptive contrast and backlight enhancement. Additionally, optional fetching can be adaptively enabled based on brightness data from the histogram. For a first optional update, the histogram can be analyzed to determine the brightness of the scene. A large number of optional updates can be performed when the scene is far from triggering the application of adaptive contrast and backlight enhancement.The operating system or display engine can track how much of the screen has changed to determine when the screen might be approaching a less bright state. If there is little certainty about how bright the scene might be, a full frame update may be triggered. For example, when a user is typing, only a small percentage of the screen (e.g., 1%) is changing. A series of 1% screen changes may not be significant enough to warrant a brightness change if the user is typing for 10 minutes. In such situations, adaptive contrast and backlight enhancement may not be checked for long periods. In some implementations, the histogram can be region-based for the frame and then combined to generate a frame-based histogram. In such cases, partial updates can be performed on a region basis that aligns with the boundaries of the region-based histogram. In such cases, adaptive contrast and backlight enhancement and selective updates can coexist even while adaptive contrast and backlight enhancement are being applied.
[0037] FIG. 3 illustrates a method for buffering display frames according to an example. In some embodiments, a new frame indication may be received (305). In one implementation, the new frame indication may be received from a rendering engine. In another implementation, the new frame indication may be received from an operating system. A determination may be made regarding whether the new frame includes an indication of a flip complete event (310).
[0038] In certain embodiments, when a flip-complete event is indicated, optional adaptive contrast and backlight enhancement may be disabled (315). For example, if a flip-complete event is indicated and the timeout period has not expired, adaptive contrast and backlight enhancement may be disabled if the gamma curve is in linear mode. Similarly, if a flip-complete event is indicated and a new frame is received within a predetermined number of frames, adaptive contrast and backlight enhancement may be disabled if the gamma curve is in linear mode.
[0039] In other embodiments, when a flip-complete event is indicated, one or more dirty areas of a new frame may be determined based on the flip-complete event (320). The display buffer may be filled with only one or more dirty areas of the new frame (325). Then, one or more dirty areas of the new frame may be scanned out from the display buffer to the display port (330).
[0040] In various embodiments, if the flip completion event is not indicated, the display buffer may be filled with a new frame (335). Optionally, the display buffer may also be filled with a new frame if the timeout period expires before the indication of a new frame is received. Optionally, the display buffer may also be filled with a new frame if the new frame is received after a predetermined number of other frames.
[0041] In some embodiments, if a flip completion event is not displayed, optional adaptive contrast and backlight enhancement may be enabled (340). For example, if a timeout period expires or a new frame is received after a predetermined number of other frames, a check may be performed to determine whether adaptive contrast and backlight enhancement may be enabled, and adaptive contrast and backlight enhancement may be set accordingly. If a flip completion event is not displayed, a new frame may be scanned out from the display buffer to the display port (345).
[0042] In one embodiment, selective adaptive contrast and backlight enhancement may be applied adaptively based on a histogram of full or partial frame changes (350). For the first selective update, the histogram may be analyzed to determine the brightness of the scene. Many selective updates may be performed when the scene is far from triggering the application of adaptive contrast and backlight enhancement. An operating system or display engine may track how much of the screen has changed to determine when the screen may be close to being less bright. If there is little certainty about how bright the scene may be, a full frame update may be triggered. For example, when a user is typing, only a small percentage of the screen (e.g., 1%) is changing. A series of 1% screen changes may not be meaningful enough to change the brightness if the user is typing for 10 or 15 minutes. In such a situation, adaptive contrast and backlight enhancement may not be checked for a long period. In some implementations, the histogram can be region-based for the frame and then combined to generate a frame-based histogram. In such cases, partial updates can be performed based on a region that aligns with the region-based histogram boundaries. In such cases, adaptive contrast and backlight enhancement and optional updates can coexist even while adaptive contrast and backlight enhancement are applied.
[0043] FIG. 4 illustrates a computing device according to an example. The computing device may be, for example, a cellular phone, a smartphone, an e-reader, a tablet, a personal computer (PC), a laptop PC, a desktop PC, a game console, a smart television, a workstation, a server, or other similar computing device. The computing device (400) may include one or more central processing units (405), one or more computing device readable media (e.g., computer memory) (410), one or more graphics processing units (GPUs) (415), and one or more displays (420). The computing device (400) may also include a number of other components, such as one or more additional input / output (I / O) interfaces (425), one or more network interfaces (430), etc. Additional components are not necessary for understanding the embodiments of the present technology and therefore will not be described further in this specification.
[0044] In embodiments, the graphics processing unit (415) may include one or more rendering engines (435), one or more display engines (440), one or more display buffers (445), and one or more display ports (450). The graphics processing unit (415) may also include a number of other components. However, such other components are not necessary for understanding the embodiments of the present technology and are therefore not further described herein.
[0045] In one implementation, an operating system (OS) stored in memory (410) may be configured to offload the rendering of display scene data to one or more rendering engines (435) when executed by a central processing unit (405). The OS may manage the rendering of display frames by one or more rendering engines (435) and the presentation of frames by one or more display engines (440) to one or more displays (420) for output to a user. The OS may, for example, provide a display to one or more display engines (440) when new frames are available from one or more rendering engines (435).
[0046] As described above in more detail in relation to FIGS. 1 through 3, one or more display engines (440) may be configured to fetch rendered display frames from one or more rendering engines (435). One or more display engines (440) may also be configured to receive indications of dirty areas of new frames or to determine dirty areas within new frames. A display buffer (445) may be configured to be filled by the display engine (440) with only the dirty areas of new frames. The display engine (440) may also be configured to scan out the dirty areas of frames from the display buffer (445) to a display port (450) for output to one or more displays (420). The display engine (440) may also be configured to fill the display buffer (445) with one or more complete frames and scan out the complete frames from the display buffer (445) to a display port (450). For example, after a predetermined number of frames, the display engine (440) can fill the display buffer (445) with complete frames and scan out the complete frames to the display port (450).
[0047] In one implementation, the display port (450) may be an embedded display port (eDP) or a wireless display interface port. In the case of a wireless display interface port, there may be a single display buffer between the encoder and the display. The display may not be updated, but the encoder may occasionally need to improve the quality. The display capture may only need to update a small part, but the encoder may still use the entire frame. With a single frame buffer, the display will write only the changed pixels. Then, the encoder will still have access to the complete frame as needed to encode the dirty areas.
[0048] FIG. 5 illustrates a computing device according to example. The computing device may be, for example, a cellular phone, a smartphone, an e-reader, a tablet, a personal computer (PC), a laptop PC, a desktop PC, a game console, a smart television, a workstation, a server, or other similar computing device. The computing device (500) may include one or more central processing units (505), one or more computing device readable media (generally referred to as computer memory) (510), and one or more displays (520). The computing device (500) may also include a number of other components, such as one or more additional input / output (I / O) interfaces, one or more network interfaces (525), etc. Additional components are not necessary for understanding the embodiments of the present technology and therefore will not be described further in this specification.
[0049] The processing unit (505) may include one or more rendering engines (530), one or more display engines (535), one or more display buffers (540), and one or more display ports (545). The processing unit (505) may also include a number of other components. However, such other components are not necessary for understanding the embodiments of the present technology and are therefore not further described herein.
[0050] As described above in more detail in connection with FIGS. 1 through 3, one or more display engines (535) may be configured to fetch display frames from one or more rendering engines (530). One or more display engines (535) may also be configured to receive indications of dirty areas of new frames or to determine dirty areas within new frames. A display buffer (540) may be configured to be filled by the display engine (535) with only the dirty areas of new frames. The display engine (535) may also be configured to scan out the dirty areas of frames from the display buffer (540) to a display port (545) for output to one or more displays (520). After a predetermined number of new frames or a predetermined timeout period, the display engine (535) may be configured to fill the display buffer (540) with one or more complete frames and scan out the complete frames from the display buffer (545) to a display port (545).
[0051] The computing devices illustrated in FIGS. 4 and 5 are illustrative of exemplary embodiments and are not intended to limit the aspects of the technology. Various components of the computing devices may be arranged in various other combinations. For example, the display may be located inside the computing device (e.g., a smartphone or tablet) or outside of it (e.g., a desktop PC or smart TV). In another example, the rendering engine and the display engine may be separate components or integrated together. In yet another example, the display buffer may be integrated into the display engine, be a separate component from the display engine, or be implemented in memory coupled to the processing unit, etc.
[0052] Aspects of the present technology advantageously reduce read and write bandwidth because the display engine reads and writes only the dirty regions of a new frame. Additionally, memory usage can be advantageously reduced because only the dirty regions are stored in the frame buffer. The reductions in bandwidth and memory usage can be further extended by the use of data compression. Furthermore, reading and writing only the dirty regions can advantageously reduce the execution time of the display engine.
[0053] Examples
[0054] The following examples relate to specific technical embodiments and point to specific features, elements, or steps that may be used or otherwise combined to achieve such embodiments.
[0055] Example 1 includes a processing unit, which includes: a display buffer; and a display engine, wherein the display engine is configured to: receive a new frame indication from a rendering engine or an operating system; determine one or more dirty areas of the new frame; fill the display buffer with one or more dirty areas of the new frame; and scan out one or more dirty areas of the new frame from the display buffer to a display port.
[0056] Example 2 includes the processing unit of Example 1, and the display engine is configured to receive the indication of one or more dirty areas.
[0057] Example 3 includes the processing unit of Example 1, and the display engine is configured to: generate flips of a plurality of planes; and determine which of the plurality of planes includes one or more dirty regions based on which plane is flipped or not flipped.
[0058] Example 4 includes the processing unit of Example 1, and the new frame, one or more dirty areas of the new frame in the display buffer, and one or more dirty areas of the new frame scanned out are compressed.
[0059] Example 5 includes a processing unit, which includes: a display buffer; and a display engine, wherein the display engine is configured to: receive a new frame indication from a rendering engine or an operating system; determine whether the new frame indication includes a flip event indication; determine one or more dirty areas of the new frame based on the flip event; fill the display buffer with one or more dirty areas of the new frame; and scan out one or more dirty areas of the new frame from the display buffer to a display port.
[0060] Example 6 includes the processing unit of Example 5, and the display engine is further configured to disable adaptive contrast and backlight enhancement when the gamma curve is in linear mode when a flip completion event indication is determined.
[0061] Example 7 includes the processing unit of Example 6, and if the gamma curve is in linear mode before the timeout period expires, the adaptive contrast and backlight enhancement are further disabled.
[0062] Example 8 includes the processing unit of Example 6, and when the gamma curve is in linear mode when it is not after a predetermined number of frames, the adaptive contrast and backlight enhancement are further disabled.
[0063] Example 9 includes the processing unit of Example 5, and the display engine is further configured to: fill the display buffer with the new frame when the flip completion event indication is not determined; and scan out the new frame from the display buffer to the display port.
[0064] Example 10 includes the processing unit of Example 9, and the display engine is additionally configured to fill the display buffer with the new frame when the indication of the new frame is received after the timeout period has expired.
[0065] Example 11 includes the processing unit of Example 9, and the display engine is further configured to fill the display buffer with the new frame when the indication of the new frame is received after an additionally predetermined number of frames.
[0066] Example 12 includes the processing unit of Example 9, and the display engine is further configured to determine whether the adaptive contrast and backlight enhancement can be enabled when the display of the new frame is received after the timeout period has expired; and to set the adaptive contrast and backlight enhancement when it is determined that the adaptive contrast and backlight enhancement can be enabled.
[0067] Example 13 includes the processing unit of Example 9, and the display engine is further configured to determine whether the adaptive contrast and backlight enhancement can be enabled when the display of the new frame is received after a predetermined number of frames; and to set the adaptive contrast and backlight enhancement when it is determined that the adaptive contrast and backlight enhancement can be enabled.
[0068] Example 14 includes the processing unit of Example 5, and the processing unit includes a graphics processing unit.
[0069] Example 15 includes the processing unit of Example 5, and the processing unit includes a central processing unit.
[0070] Example 16 includes a method for buffering rendered display frames for presentation on a display, comprising: receiving a indication of a new frame from a rendering engine or operating system; determining one or more dirty regions of the new frame; filling the display buffer with one or more dirty regions of the new frame; and scanning out one or more dirty regions of the new frame from the display buffer to a display port.
[0071] Example 17 includes the method of Example 16, and the step of determining one or more dirty regions of the new frame includes the step of receiving a mark of the one or more dirty regions.
[0072] Example 18 includes the method of Example 16, and the step of determining one or more dirty regions of a new compressed frame includes: generating flips of a plurality of planes; and determining which of the plurality of planes includes one or more dirty regions based on which plane is flipped or not flipped.
[0073] Example 19 includes the method of Example 16, wherein the new frame, one or more dirty areas of the new frame within the display buffer, and one or more dirty areas of the scanned-out new frame are compressed.
[0074] Example 20 includes a method for buffering rendered display frames for presentation on a display, comprising: receiving a new frame indication from a rendering engine or operating system; determining whether the new frame indication includes a flip event indication; determining one or more dirty regions of the new frame based on the flip event; filling a display buffer with one or more dirty regions of the new frame; and scanning out one or more dirty regions of the new frame from the display buffer to a display port.
[0075] Example 21 includes the method of Example 20 and additionally includes the step of disabling adaptive contrast and backlight enhancement when the gamma curve is in linear mode when the flip completion event indication is determined.
[0076] Example 22 includes the method of Example 21, and if the gamma curve is in linear mode before the timeout period expires, the adaptive contrast and backlight enhancement are further disabled.
[0077] Example 23 includes the method of Example 21, and when the gamma curve is in linear mode when received within a predetermined number of frames, the adaptive contrast and backlight enhancement are further disabled.
[0078] Example 24 includes the method of Example 20 and further includes the step of filling the display buffer with the new frame when the flip completion event indication is not determined; and the step of scanning out the new frame from the display buffer to the display port.
[0079] Example 25 includes the method of Example 24 and additionally includes the step of filling the display buffer with the new frame when the indication of the new frame is received after the timeout period has expired.
[0080] Example 26 includes the method of Example 24 and additionally includes the step of filling the display buffer with the new frame when a new frame is received after a predetermined number of frames.
[0081] Example 27 includes the method of Example 24 and further includes the step of determining whether the adaptive contrast and backlight enhancement can be enabled when the indication of the new frame is received after the timeout period has expired; and the step of setting the adaptive contrast and backlight enhancement when it is determined that the adaptive contrast and backlight enhancement can be enabled.
[0082] Example 28 includes the method of Example 24 and further includes the step of determining whether the adaptive contrast and backlight enhancement can be enabled when a new frame is received after a predetermined number of frames; and the step of setting the adaptive contrast and backlight enhancement when it is determined that the adaptive contrast and backlight enhancement can be enabled.
[0083] Example 29 includes the method of Example 20 and further includes the step of applying the adaptive contrast and backlight enhancement based on a histogram of complete frame changes.
[0084] Example 30 includes the method of Example 20 and further includes the step of applying the adaptive contrast and backlight enhancement based on a histogram of partial frame changes.
[0085] Example 31 includes a computing device, which comprises: a display; and a processing unit including a display buffer and a display engine, wherein the display engine is configured to: receive a display of a new frame from a rendering engine or an operating system; determine one or more dirty areas of the new frame; fill the display buffer with one or more dirty areas of the new frame; and scan out one or more dirty areas of the new frame from the display buffer to a display port.
[0086] Example 32 includes the computing device of Example 31, and the display engine is configured to receive a display of one or more dirty areas.
[0087] Example 33 includes the computing device of Example 31, and the display engine is configured to: generate flips of a plurality of planes; and determine which of the plurality of planes includes one or more dirty regions based on which plane is flipped or not flipped.
[0088] Example 34 includes the computing device of Example 31, and the new frame, one or more dirty areas of the new frame in the display buffer, and one or more dirty areas of the new frame scanned out are compressed.
[0089] Example 35 includes the computing device of Example 31, and the processing unit includes a central processing unit.
[0090] Example 36 includes the computing device of Example 31, and the processing unit includes a graphics processing unit.
[0091] Example 37 includes the computing device of Example 31, and the display engine is coupled to the display by the display port.
[0092] Example 38 includes a computing device, which comprises: a display; and a processing unit including a display buffer and a display engine, wherein the display engine is configured to: receive a display of a new frame from a rendering engine or an operating system; determine whether the display of the new frame includes a display of a flip event; determine one or more dirty regions of the new frame based on the flip event; fill the display buffer with one or more dirty regions of the new frame; and scan out one or more dirty regions of the new frame from the display buffer to a display port.
[0093] Example 39 includes the computing device of Example 38, and the display engine is further configured to disable adaptive contrast and backlight enhancement when the gamma curve is in linear mode when a flip completion event indication is determined.
[0094] Example 40 includes the computing device of Example 39, and when the gamma curve is in linear mode when the timeout period has not expired, the adaptive contrast and backlight enhancement are further disabled.
[0095] Example 41 includes the computing device of Example 39, and when the gamma curve is in linear mode when not after a predetermined number of frames, the adaptive contrast and backlight enhancement are further disabled.
[0096] Example 42 includes the computing device of Example 38, and the display engine is further configured to: fill the display buffer with the new frame when the flip completion event indication is not determined; and scan out the new frame from the display buffer to the display port.
[0097] Example 43 includes the computing device of Example 42, and the display engine is additionally configured to fill the display buffer with the new frame when the timeout period expires and the indication of the new frame is received.
[0098] Example 44 includes the computing device of Example 42, and the display engine is further configured to fill the display buffer with the new frame when the indication of the new frame is received after an additionally predetermined number of frames.
[0099] Example 45 includes the computing device of Example 42, and the display engine is further configured to determine whether the adaptive contrast and backlight enhancement can be enabled when the display of the new frame is received after the timeout period has expired; and to set the adaptive contrast and backlight enhancement when it is determined that the adaptive contrast and backlight enhancement can be enabled.
[0100] Example 46 includes the computing device of Example 42, and the display engine is further configured to determine whether the adaptive contrast and backlight enhancement can be enabled when the display of the new frame is received after a predetermined number of frames; and to set the adaptive contrast and backlight enhancement when it is determined that the adaptive contrast and backlight enhancement can be enabled.
[0101] Example 47 includes the computing device of Example 38, and the display engine is further configured to apply the adaptive contrast and backlight enhancement based on a histogram of complete frame changes.
[0102] Example 49 includes the computing device of Example 38, and the display engine is further configured to apply the adaptive contrast and backlight enhancement based on a histogram of partial frame changes.
[0103] While the foregoing examples illustrate the principles of the present technology in one or more specific applications, it will be apparent to those skilled in the art that numerous modifications in the form of implementation, use, and details can be made without training in inventive ability and without departing from the principles and concepts of the present technology.
Claims
Claim 1 At least one non-transitory computer-readable medium comprising instructions, wherein, when executed, the instructions cause at least one processor to: determine whether a new frame indication includes a flip event indication; identify one or more dirty regions of the new frame based on the flip event; fill a display buffer with the one or more dirty regions of the new frame; scan out the one or more dirty regions of the new frame from the display buffer to a display port; and apply adaptive contrast and backlight enhancement based on a histogram of changes in the new frame. Claim 2 In claim 1, the instructions cause at least one non-transient computer-readable medium to disable the adaptive contrast and backlight enhancement when a flip completion event indication is determined and the timeout period has not expired. Claim 3 In claim 1, the instructions cause at least one non-transient computer-readable medium to disable the adaptive contrast and backlight enhancement when the gamma curve is in a linear mode when a flip completion event indication is determined. Claim 4 In paragraph 3, the instructions cause the at least one processor to further disable the adaptive contrast and backlight enhancement when the gamma curve is in the linear mode before the timeout period expires or within a predetermined number of frames, at least one non-transient computer-readable medium. Claim 5 In claim 1, the instructions cause at least one processor to: fill the display buffer with the new frame when the flip completion event indication is not determined; and scan out the new frame from the display buffer to the display port, at least one non-transient computer-readable medium. Claim 6 In paragraph 5, the above instructions cause the at least one processor to fill the display buffer with the new frame when the indication of the new frame is received after the timeout period has expired, at least one non-transient computer-readable medium. Claim 7 In paragraph 5, the above instructions cause at least one processor to fill the display buffer with the new frame when the indication of the new frame is received after a predetermined number of frames, at least one non-transient computer-readable medium. Claim 8 At least one non-transient computer-readable medium comprising instructions, wherein, when executed, the instructions cause at least one processor to: acquire a mark of a new frame; and in response that the mark of the new frame does not include a mark of a flip-complete event, to: fill a display buffer with the new frame; scan out the new frame from the display buffer to a display port; and apply adaptive contrast and backlight enhancement based on a histogram of changes in the new frame. Claim 9 In paragraph 8, the instructions are at least one non-transient computer-readable medium that causes the at least one processor to obtain the indication of the new frame from at least one of a rendering engine or an operating system. Claim 10 In paragraph 8, the instructions cause at least one non-transient computer-readable medium to cause the display buffer to be filled with the new frame after the expiration of the timeout period. Claim 11 In paragraph 8, the above instructions cause the at least one processor to fill the display buffer when the new frame is received after a threshold number of other frames, at least one non-transient computer-readable medium. Claim 12 In paragraph 8, the instructions cause at least one non-transient computer-readable medium to check whether the adaptive contrast and backlight enhancement is applied in response to the indication that the indication does not include an indication of a flip completion event. Claim 13 In paragraph 12, the above instructions cause at least one processor to perform the check after the expiration of the timeout period, at least one non-transient computer-readable medium. Claim 14 In paragraph 12, the above instructions cause at least one non-transient computer-readable medium to perform the check when the new frame is received after a threshold number of other frames. Claim 15 In paragraph 8, the new frame in the display buffer is compressed in at least one non-transient computer-readable medium. Claim 16 At least one non-transient computer-readable medium comprising instructions, wherein, when executed, the instructions cause at least one processor to: determine whether a new frame’s indication includes a flip event’s indication—the new frame’s indication is obtained from at least one of a rendering engine or an operating system—; determine one or more dirty areas of the new frame based on the flip event; fill a display buffer with the one or more dirty areas of the new frame; scan out the one or more dirty areas of the new frame from the display buffer to a display port; and apply adaptive contrast and backlight enhancement based on a histogram of changes in the new frame. Claim 17 In paragraph 16, the above instructions cause at least one non-transient computer-readable medium to disable the adaptive contrast and backlight enhancement when the gamma curve is in a linear mode when a flip completion event indication is determined. Claim 18 In paragraph 16, the above instructions cause at least one non-transient computer-readable medium to disable adaptive contrast and backlight enhancement when the gamma curve is in linear mode when the timeout period has not expired. Claim 19 In paragraph 16, the above instructions cause at least one processor to disable the adaptive contrast and backlight enhancement when the gamma curve is in a linear mode for less than a specified number of frames, at least one non-transient computer-readable medium. Claim 20 In paragraph 16, the above instructions cause at least one processor to: fill the display buffer with the new frame when the flip completion event indication is not determined; and scan out the new frame from the display buffer to the display port, at least one non-transient computer-readable medium. Claim 21 In paragraph 20, the above instructions cause at least one processor to fill the display buffer with the new frame when the indication of the new frame is received after the timeout period has expired, at least one non-transient computer-readable medium. Claim 22 In paragraph 20, the above instructions cause at least one processor to fill the display buffer with the new frame when the indication of the new frame is received after a specified number of frames, at least one non-transient computer-readable medium. Claim 23 In paragraph 16, the above instructions cause at least one processor to: determine whether the adaptive contrast and backlight enhancement can be enabled when the indication of the new frame is received after the timeout period has expired; and to set the adaptive contrast and backlight enhancement when it is determined that the adaptive contrast and backlight enhancement can be enabled, at least one non-transient computer-readable medium. Claim 24 In paragraph 16, the above instructions cause at least one processor to: determine whether the adaptive contrast and backlight enhancement can be enabled when the indication of the new frame is received after a specified number of frames; and to set the adaptive contrast and backlight enhancement when it is determined that the adaptive contrast and backlight enhancement can be enabled, at least one non-transient computer-readable medium. Claim 25 In paragraph 16, the above instructions cause the at least one processor to apply the adaptive contrast and backlight enhancement based on at least one of a histogram of complete frame changes or a histogram of partial frame changes, at least one non-transient computer-readable medium.
Citation Information
Patent Citations
System and method for providing control data for dynamically adjusting lighting and adjusting video pixel data for a display to substantially maintain ...
KR1020130098354A
Method and device for selective display refresh
KR1020150047612A
Adaptive partial screen update with dynamic backlight control capability
KR1020160077151A
Sparse refresh of display
US20030107578A1
Updating graphical content based on dirty display buffers
US20130278619A1
