In one embodiment, a display controller may comprise logic to identify an opaque region in windows defining an output image. The display controller determines an overlay order for any overlapping portions of the windows. A higher order window overlays a lower order window. The display controller fetches data defining the opaque region only from an uppermost overlay window prior to displaying the output image.
In various other embodiments, the display controller may comprise logic to define multiple ranges of the output image. The multiple ranges define vertical portions of the windows. The display controller defines multiple sub-ranges within the multiple ranges. The multiple sub-ranges define horizontal portions of the windows. The display controller determines a transparency level for each of the windows in the multiple sub-ranges. The display controller retrieves only a single blended transparency level for any of the overlapping portions of the windows in any one of the multiple sub-ranges.
In various other embodiments, the display controller may comprise logic to identify a sub-range within a range by a first starting X-value and the transparency level for all windows within the sub-range. The sub-range defines the blended transparency level for the overlapping in the sub-range. The display controller may comprise logic to identify the end of any one of the sub-ranges by a single ending X-value, wherein beyond the ending X-value the sub-range does not contain a window. The display controller may comprise logic to define a range buffer comprising multiple sub-range fields, wherein the sub-range fields comprise first and second fields. The first field is to store a starting X-value for a corresponding sub-range of the display and the sub-range fields. The second field is to store the blended transparency level for each of the windows in the sub-range.
In one embodiment, the device 100 may be implemented as part of a wired communication system, a wireless communication system, or a combination of both. In one embodiment, for example, the device 100 may be implemented as a mobile computing device having wireless capabilities. A mobile computing device may refer to any device having a processing system and a mobile power source or supply, such as one or more batteries, for example. Examples of a mobile computing device may include a laptop computer, ultra-laptop computer, portable computer, handheld computer, palmtop computer, personal digital assistant (PDA), cellular telephone, combination cellular telephone/PDA, smart phone, pager, one-way pager, two-way pager, messaging device, data communication device, and so forth. Examples of a mobile computing device also may include computers that are arranged to be worn by a person, such as a wrist computer, finger computer, ring computer, eyeglass computer, belt-clip computer, arm-band computer, shoe computers, clothing computers, and other wearable computers. In one embodiment, for example, a mobile computing device may be implemented as a smart phone capable of executing computer applications, as well as voice communications and/or data communications. Although some embodiments may be described with a mobile computing device implemented as a smart phone by way of example, it may be appreciated that other embodiments may be implemented using other wireless mobile computing devices as well. The embodiments are not limited in this context.
As shown in
In one embodiment, a usage model for the display 104 that supports an output image 122 comprising multiple window planes 124a, b, N, where N may be any number, may be implemented with the display controller 114. At least two or more of the multiple window planes 124a, b, N may overlap in some region. Windows planes that overlap may be referred to herein as overlay windows and the regions of the two or more window planes that overlap may be referred to as overlay regions. Each of the window planes 124a-N may represent a different application, for example, from a number of simultaneously running computer implemented processes. The output image 122 on the display 104 may be determined by the order of superposition of the window planes 124a-N. In one implementation, the display controller 114 determines the order of superposition of the window planes 124a-N to reduce the total bandwidth required by the display controller 114 to display the output image 122. In the embodiment illustrated in
In one embodiment, the display controller 114 may be implemented as logic (e.g., software, hardware, or a combination of software and hardware). To simplify the description the logic may be presented in terms of pseudo-code and a reference implementation thereof throughout this description. The display controller 114 and the logic may identify the presence of opaque windows among the window planes 124a-N or regions in the output image 122 of the display 104 to avoid wasteful fetching of data from all lower-order windows to be displayed. The identification of opaque windows or opaque regions in overlapping windows may be referred to as determining window “occlusion.” In other embodiments, the display controller 114 and the logic may identify the presence of transparent windows among the window planes 124a-N or regions in the output image 122 of the display 104 to avoid wasteful fetching of data to be displayed. Thus, one embodiment of the display controller 114 may be implemented to avoid fetching all the windows that are applicable to the output image 122 as may be currently implemented in conventional display controllers. Depending on the user selected window transparency settings, the overlay data may be merged together or blended to present a composite output image 122 on the display 104. If a given window plane 124a-N is deemed opaque, however, then all data in the window planes 124a-N whose positional order is lower (higher order=closer to viewer) than the opaque window do not form a part of the output image 122 and their data may be discarded.
This provides a savings in bandwidth because only the data required to present the composite output image 122 is retrieved and not all data associated with all the windows to be displayed. Various embodiments comprising a micro-architectural solution are described herein for leveraging the opacity characteristics of overlaid window planes 124a-N used by the display controller 114. A standard first-in-first-out (FIFO) registers and comparators and some software overhead may be utilized to implement the various embodiments, although they are not limited in this context. Software intervention may be limited to a period where there is frame configuration update activity, for example. The various embodiments described herein may be scalable across the various number of window planes 124a-N and may be independent of alpha encoding methodologies where alpha stands for the transparency or opaqueness level of a particular window plane 124a-N. Depending on the particular implementation the alphas associated with the window planes 124a-N may take on values from 0 to 1 (or 0% to 100%) where a value of 0 may represent total transparency/opaqueness and a value of 1 may represent total opaqueness/transparency and fractional values between 0 and 1 may represent variable levels of transparency/opaqueness or opaqueness/transparency, for example.
Thus, the various embodiments described herein may provide increased performance through lower bandwidth requirements. Normal usage models of display imagery have significant opacity amongst the overlays that can be leveraged to reduce system bandwidth bottlenecks and thereby also reduce system power consumption. Increasing display resolutions and lowering power consumption may be particularly valuable for mobile computing devices such as the device 100.
S(2N+1)(Log2 R+pN) bits of storage (1)
Accordingly, the embodiments described herein may be implemented in a logic such as an algorithm, computer implemented method, hardware software, or a combination of hardware/software that may be represented using pseudo-code, and a reference implementation thereof, to identify the presence of opaque windows (“occlusion”) or regions and thereby avoid the wasteful fetching of data from all lower-order windows. To leverage from the occlusion detection, the following scheme of window planes W1-N representation may presented. In one embodiment, the window planes W1-N may be the windows 124a-N shown in
The transparency level of each window plane W1-N may be represented by αi, where α=1 indicates an opaque window, α=0 indicates full transparency, and values therebetween represent variable levels of opaqueness/transparency. From normalization considerations:
The logic or computer implemented method may be implemented as a recursive fetch starting with the highest order window as follows:
αtot=0;
For i=N to 1
While ((αtot≠1) & (αi≠0)) FETCH(Wi);
αtot=αtot+αi;
End for.
Depending on the size and location of the occluded widows, the reduction in bandwidth needed to service the display 104 may range from 0% to 100*(N−1)/N %. In one embodiment the above logic may be implemented using a software assisted range buffer. The pixels for each window W1-N may be fetched on a per-line basis. For each line, software may encode the ranges of pixels for which the blending configuration is the same. A configuration may be defined as the complete set of windows {Wi} i=1 . . . k (k<=N), that are needed to compute the output image pixel for that range. For a display size of R×S pixels, with an alpha precision of p-bits, the range buffer 202 would need a maximum of S(2N+1)(Log2 R+pN) bits of storage.
In the embodiment illustrated in
In the range buffer 202, the location of each window W1-3 may be given in terms of starting and ending co-ordinates in the {X, Y} plane, where X represents the horizontal axis and Y represents the vertical axis. Based on the X, Y co-ordinates, the display 204 may be divided into multiple ranges M1 to Mj, where ‘j’ may be any number. Each range M1-j spans the entire horizontal width of the display 204 screen (R pixels horizontally) and the height of each range M1-j may vary from a single pixel to S pixels in the vertical direction. Depending on the co-location of the windows W1-3 and their relative order of superposition, each range M1-j may be divided into one or more sub-ranges SR1-k, where ‘k’ may be any number, characterized by the corresponding alpha α1-N blending configuration.
In the embodiment illustrated in
In the range buffer 202, each sub-range SR1-k within a range Mj may be uniquely identified by its starting X-value. In the embodiment illustrated in
As shown in
For (Wn AND Mn) αn′=αn
Else αn′=0.
Thus, the coverage by the windows Wi-N may be defined by an alpha N-tet {[α1, α2, α3 . . . αN]} which defines the amount that each alpha α1-N contributes to the image pixel in that range M1-j. The alpha N-tet {[α1, α2, α3 . . . αN]} for a sub-range SR1-k may be stored in a corresponding storage range B1-j in the range buffer 202. As previously stated, nothing may be stored in the range buffer 202 storage range B1-j for the base plane alpha α0. Thus, for each storage buffer range B1-j corresponding to the display range M1-j the alpha N-tet {[α1, α2, α3 . . . αN]} defines the relative contribution of each alpha α1, α2, α3 . . . αN corresponding to the windows W1-N in that range M1-j. Accordingly, in the example embodiment illustrated in
As previously stated, the alphas also may take on values between 0 and 1. Therefore, for a given range M1-j and sub-range SR1-k the alpha triplet {[0.85, 0.10, 0.5]} indicates that there is 85% coverage by the window W1 for that sub-range SR1-k, 10% coverage by window W2, and 5% coverage by window W3, and so forth. In the range buffer 202, the beginning of a range M1-j may be specified by a single X-coordinate value of the first window W1-N prior to which the ranges M1-j are presumed to be absent of any windows W1-N. The end of range M1-j may be specified by a single X-coordinate value beyond which the range M1-j is presumed to be absent of any windows W1-N. If one or more windows W1-N are coincident with an edge 208, 210 of the display 204, then the ending X-coordinate would be same as the value R or the number of pixel lines across the display 204.
With reference to the embodiment illustrated in
In the M2 display range, the display 204 contains three sub-ranges. A corresponding B2 buffer range may be defined in the range buffer 202 memory. The first sub-range (X0-X1) contains only the base pane alpha α0 and there is no corresponding alpha triplet {[α1, α2, α3]} stored in the range buffer 202. This may be interpreted by the display buffer as {X0, [0, 0, 0]}; {X1}. The second sub-range (X1-X4) contains the window W1 with a corresponding alpha α1 over the base plane 206. The transparency of the window W1 in the (X1-X4) sub-range is stored in separate fields in the B2 buffer range as {X1, [α1, 0, 0]}; {X4}, where the {X4} field may be interpreted by the display controller 114 as {X4, [0, 0, 0]}. It is noted that the X1 coordinate indicates the location of the first window W1 in the first display range M2 that contains a window. Thus, the entry in the first range buffer 202 field indicates the beginning of the first window in any of the display ranges. This is because nothing is stored in the range buffer 202 fields for the background panel 206. The display controller (e.g., the display controller 114 shown in
In the M3 display range, the display 204 contains the windows W1 and W3 with respective alphas α1 and α3 over the base plane 206 and there may be a corresponding B3 buffer range defined in the range buffer 202 memory. In the M3 display range, the sub-ranges SR1-5 are explicitly labeled for a better understanding of the embodiment. The first sub-range SR1 (X0-X1) contains only the base plane alpha α0 and there is no corresponding alpha triplet {[α1, α2, α3]} stored in the range buffer 202. The second sub-range SR2 (X1-X3) contains only the window W1 with its corresponding α1. The third sub-range SR3 (X3-X4) contains a blend of the both the windows W1 and W3 with corresponding α1 and α3. The fourth sub-range SR4 (X4-X5) contains only the window W3 with the corresponding α3. And the fifth sub-range SR5 (X5-X7) contains only the base plane alpha α0 and nothing is stored in the range buffer 202. These may be defined in the range buffer 202 range B3 as {X1, [α1, 0, 0]}; {X3, [0, 0, α3]}; {X5}. The display controller 114 reads the fields: {X1, [α1, 0, 0]}; {X3, [0, 0, α3]}; {X5}, and accordingly, applies the base plane alpha α0 from the left edge 210 of the display 204 at the X0 coordinate until the X1 coordinate is reached. Then from the X1 coordinate the display controller 114 applies the alpha triplet [α1, 0, 0] until the X3 coordinate is reached, then from the X3 coordinate applies the alpha triplet [0, 0, α3] until the X5 coordinate is reached, then applies the base plane alpha α0 to the right edge 208 of the display 204 at the coordinate X7.
In the M4 display range, the display 204 contains only the window W3 with the respective alpha α3 over the base plane 206. A corresponding B4 buffer range may be defined in the range buffer 202 memory. The sub-range (X0-X1) contains only the base plane alpha α0 and there is no corresponding alpha triplet {[α1, α2, α3]} stored in the range buffer 202. The sub-range (X4-X5) contains only the window W3 with its corresponding α3. The sub-range (X5-X7) contains only the base plane alpha α0 and there is no corresponding alpha triplet {[α1, α2, α3]} stored in the range buffer 202. These may be defined in the B4 buffer range as {X3, [0, 0, α3]}; {X5}. The display controller 114 reads the fields: {X3, [0, 0, α3]}; {X5}, and accordingly, applies the base plane alpha α0 from the left edge 210 of the display 204 at the X0 coordinate until the X3 coordinate is reached. Then from the X3 coordinate the display controller 114 applies the alpha triplet [0, 0, α3] until the X5 coordinate is reached, then applies the base plane alpha α0 to the right edge 208 of the display 204 at the coordinate X7.
In the M5 range, the display 204 contains the windows W2 and W3 with respective alphas α2 and α3 over the base plane 206. A corresponding B5 buffer range may be defined in the range buffer 202 memory. The sub-range (X0-X2) contains only the base plane alpha α0 and there is no corresponding alpha triplet {[α1, α2, α3]} stored in the range buffer 202. The sub-range (X2-X3) contains only the window W2 with its corresponding α2. The third sub-range (X3-X5) contains a blend of the windows W2 and W3 based on the corresponding alphas α2 and α3. The sub-range (X5-X6) contains only the window W2 with its corresponding alpha α2. The sub-range (X6-X7) contains only the base plane alpha α0 and there is no corresponding alpha triplet {[α1, α2, α3]} stored in the range buffer 202. These may be defined in the B5 buffer range as {X2, [0, α2, 0]}; {X3, [0, α2, α3]}; {X5, [0, α2, 0]}; {X6}. The display controller 114 reads the fields: {X2, [0, α2, 0]}; {X3, [0, α2, α3]}; {X5, [0, α2, 0]}; {X6}, and accordingly, applies the base plane alpha α0 from the left edge 210 of the display 204 beginning at the X0 coordinate until the X2 coordinate is reached. Then from the X2 coordinate the display controller 114 applies the alpha triplet [0, α2, 0] until the X3 coordinate is reached, then applies the alpha triplet [0, α2, α3] until the X5 coordinate is reached then applies the base plane alpha α0 to the right edge 208 of the display 204 at the coordinate X7.
In the M6 range, the display 204 contains the window W2 with a corresponding alpha α2 over the base plane 206. A corresponding B6 buffer range may be defined in the range buffer 202 memory. The sub-range (X0-X2) contains only the base plane alpha α0 and there is no corresponding alpha triplet {[α1, α2, α3]} stored in the range buffer 202. The sub-range (X2-X6) contains only the window W2 with its corresponding α2. The sub-range (X6-X7) contains only the base plane alpha α0 and there is no corresponding alpha triplet {[α1, α2, α3]} stored in the range buffer 202. These may be defined in the B6 buffer range as {X2, [0, α2, 0]}; {X6}. The display controller 114 reads the fields: {X2, [0, α2, 0]}; {X6}, and accordingly, applies the base plane alpha α0 from the left edge 210 of the display 204 beginning at the X0 coordinate until the X2 coordinate is reached. Then from the X2 coordinate the display controller 114 applies the alpha triplet [0, α2, 0] until the X6 coordinate is reached, then applies the base plane alpha α0 to the right edge 208 of the display 204 at the coordinate X7.
The M7 range does not contain any sub-ranges and for entire M7 range R (X0-X7) of the display 204, the range buffer 202 does not store any alpha a values because there are no window overlays other than the background panel alpha defined by α0. Accordingly, the previous X-coordinate X6 form the M6 range is the ending X-coordinate stored in the range buffer 202 for the display 204.
In the embodiment illustrated in
In operation, the fetch pointer state machine 404 outputs a Y-pointer on line 420 and an X-pointer on line 422 to retrieve the window alpha a values 418 for each sub-range 4211-k within the ranges 4231-j stored in the range buffer 402 corresponding to an output image comprising windows. The window alpha a values 418 are mixed or blended with the pixel color data 424 by the mixer 408. The pixel color data 424 are retrieved by the fetch issue controller 406 from memory via the system bus 416. The mixed/blended pixel color data 426 are then output to the display 414.
The display controller 400 provides increased performance through lower bandwidth requirements. Conventional usage models of display imagery have significant opacity amongst the various overlays that can be leveraged to reduce system bandwidth bottlenecks and reduce power accordingly. With increasing resolutions of the displays 104, 204, 414 and lower power consumption targets, the display controller 400 may provided certain advantages handheld and mobile devices such as the device 100 shown in
As an illustration, a comparison in bandwidth requirements between the various embodiments of the display controller 114, 400 described herein and one existing architecture as implemented in the PXA27xx family of XScale® microarchitecture processors made by Intel® Corporation. The configuration chosen assumes one base plane (e.g., base plane 206) plus two overlays (e.g., windows W1, 2) being displayed on a VGA screen (640×480) as the display 104, 204, 414, for example. The base plane covers the display and the percentage of overlap of the overlay layers is denoted by the occlusion ratio. Both overlays may be assumed to be of the same resolution, for example. The savings in bandwidth are tabulated in Table 1 below:
Operations for the above described embodiments may be further described with reference to the following figures and accompanying examples. Some of the figures may include a logic flow. Although such figures presented herein may include a particular logic flow, it can be appreciated that the logic flow merely provides an example of how the general functionality as described herein can be implemented. Further, the given logic flow does not necessarily have to be executed in the order presented unless otherwise indicated. In addition, the given logic flow may be implemented by a hardware element, a software element executed by a processor, or any combination thereof. The embodiments are not limited in this context.
In various other embodiments, the display controller 400 may comprise logic to define multiple ranges M1-j of the output image 122. The multiple ranges M1-j define vertical portions of the windows W1-3. The display controller 400 defines multiple sub-ranges (e.g., SR1-5) within the multiple ranges M1-j, the multiple sub-ranges define horizontal portions of the windows W1-3. The display controller 400 determines a transparency level (e.g., the alpha a values) for each of the windows W1-3 in the multiple sub-ranges and retrieves only a single blended transparency level for any of the overlapping portions of the windows W1, 3 or W2, 3 in any one of the multiple sub-ranges. The sub-range (e.g., SR1-5) may be identified within a range M1-j by a first starting X-value and the transparency level for all the windows W1-3 in the sub-range. The sub-range defines the blended transparency level for the overlapping windows W1, 3 or W2, 3 in the sub-range. The end of any one of the sub-ranges may be identified by a single ending X-value, beyond which the sub-range does not contain a window. A range buffer 300 may be defined. The range buffer 300 comprises multiple sub-range fields 304, 306. The sub-range fields 304, 306 comprise first and second fields 302a, b (or 302c, d). The first field 302a or 302c is to store a starting X-value for a corresponding sub-range of the output display 122 and the second field 302b or 302d is to store the blended transparency level (e.g., the alpha α values) for each of the windows W1-3 in the sub-range.
Various embodiments may be implemented using hardware elements, software elements, or a combination of both. Examples of hardware elements may include processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field programmable gate array (FPGA), logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth. Examples of software may include software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. Determining whether an embodiment is implemented using hardware elements and/or software elements may vary in accordance with any number of factors, such as desired computational rate, power levels, heat tolerances, processing cycle budget, input data rates, output data rates, memory resources, data bus speeds and other design or performance constraints.
Some embodiments may be described using the expression “coupled” and “connected” along with their derivatives. These terms are not intended as synonyms for each other. For example, some embodiments may be described using the terms “connected” and/or “coupled” to indicate that two or more elements are in direct physical or electrical contact with each other. The term “coupled,” however, may also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other.
Some embodiments may be implemented, for example, using a machine-readable medium or article which may store an instruction or a set of instructions that, if executed by a machine, may cause the machine to perform a method and/or operations in accordance with the embodiments. Such a machine may include, for example, any suitable processing platform, computing platform, computing device, processing device, computing system, processing system, computer, processor, or the like, and may be implemented using any suitable combination of hardware and/or software. The machine-readable medium or article may include, for example, any suitable type of memory unit, memory device, memory article, memory medium, storage device, storage article, storage medium and/or storage unit, for example, memory, removable or non-removable media, erasable or non-erasable media, writeable or re-writeable media, digital or analog media, hard disk, floppy disk, Compact Disk Read Only Memory (CD-ROM), Compact Disk Recordable (CD-R), Compact Disk Rewriteable (CD-RW), optical disk, magnetic media, magneto-optical media, removable memory cards or disks, various types of Digital Versatile Disk (DVD), a tape, a cassette, or the like. The instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, encrypted code, and the like, implemented using any suitable high-level, low-level, object-oriented, visual, compiled and/or interpreted programming language.
Unless specifically stated otherwise, it may be appreciated that terms such as “processing,” “computing,” “calculating,” “determining,” or the like, refer to the action and/or processes of a computer or computing system, or similar electronic computing device, that manipulates and/or transforms data represented as physical quantities (e.g., electronic) within the computing system's registers and/or memories into other data similarly represented as physical quantities within the computing system's memories, registers or other such information storage, transmission or display devices. The embodiments are not limited in this context.
Numerous specific details have been set forth herein to provide a thorough understanding of the embodiments. It will be understood by those skilled in the art, however, that the embodiments may be practiced without these specific details. In other instances, well-known operations, components and circuits have not been described in detail so as not to obscure the embodiments. It can be appreciated that the specific structural and functional details disclosed herein may be representative and do not necessarily limit the scope of the embodiments.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.