Alpha blending for power and display optimization

EP4754710A1Pending Publication Date: 2026-06-10QUALCOMM INC

Patent Information

Authority / Receiving Office
EP · EP
Patent Type
Applications
Current Assignee / Owner
QUALCOMM INC
Filing Date
2023-07-28
Publication Date
2026-06-10

AI Technical Summary

Technical Problem

Existing technologies face challenges in balancing power consumption and visual quality in display devices, particularly with the use of color formats like RGBA10101010, which may have compatibility issues with operating systems and rendering engines, and consume excessive power due to excessive bits allocated for the alpha value.

Method used

The proposed solution involves a novel spatial sub-sampling approach for alpha channels in certain color formats, such as RGBA, where each 2x2 pixel block shares an 8-bit alpha value, and each pixel contributes 2 bits to the alpha value, optimizing bit usage and balancing power and visual quality.

Benefits of technology

This approach efficiently utilizes each bit in color formats, balances performance and power consumption, especially in high dynamic range (HDR) video playback, and meets specific buffer alignment conditions, thereby enhancing visual/power optimizations for color/pixel blending.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2023109753_06022025_PF_FP_ABST
    Figure CN2023109753_06022025_PF_FP_ABST
Patent Text Reader

Abstract

Aspects presented herein relate to methods and devices for image processing including an apparatus, e.g., a GPU or DPU. The apparatus may obtain a first indication of an image including a set of pixels associated with a color format including a set of color channels, where each of a subset of pixels includes at least one first value for at least one first channel that is different from other pixels in the subset of pixels, and where each of the subset of pixels includes a second value for a second channel that is equal to the other pixels in the subset of pixels. The apparatus may also configure the second value for each pixel in the subset of pixels based on the set of pixels. Further, the apparatus may output a second indication of the image including the configured second value for each pixel in the subset of pixels.
Need to check novelty before this filing date? Find Prior Art

Description

ALPHA BLENDING FOR POWER AND DISPLAY OPTIMIZATIONTECHNICAL FIELD

[0001] The present disclosure relates generally to processing systems and, more particularly, to one or more techniques for image processing.

[0002] INTRODUCTION

[0003] Computing devices often perform graphics and / or display processing (e.g., utilizing a graphics processing unit (GPU) , a central processing unit (CPU) , a display processor, etc. ) to render and display visual content. Such computing devices may include, for example, computer workstations, mobile phones such as smartphones, embedded systems, personal computers, tablet computers, and video game consoles. GPUs are configured to execute a graphics processing pipeline that includes one or more processing stages, which operate together to execute graphics processing commands and output a frame. A central processing unit (CPU) may control the operation of the GPU by issuing one ormore graphics processing commands to the GPU. Modern day CPUs are typically capable of executing multiple applications concurrently, each of which may need to utilize the GPU during execution. A display processor is configured to convert digital information received from a CPU to analog values and may issue commands to a display panel for displaying the visual content. A device that provides content for visual presentation on a display may utilize a GPU and / or a display processor.

[0004] A GPU of a device may be configured to perform the processes in a graphics processing pipeline. Further, a display processor or display processing unit (DPU) may be configured to perform the processes of display processing. However, with the advent of wireless communication and smaller, handheld devices, there has developed an increased need for improved graphics or display processing.

[0005] BRIEF SUMMARY

[0006] The following presents a simplified summary of one or more aspects in order to provide a basic understanding of such aspects. This summary is not an extensive overview of all contemplated aspects, and is intended to neither identify key or critical elements of all aspects nor delineate the scope of any or all aspects. Its sole purpose  is to present some concepts of one or more aspects in a simplified form as a prelude to the more detailed description that is presented later.

[0007] In an aspect of the disclosure, a method, a computer-readable medium, and an apparatus are provided. The apparatus may be a graphics processing unit (GPU) , a display processing unit (DPU) , or any apparatus that may perform image processing. The apparatus may obtain a first indication of an image including a set of pixels, where the set of pixels is associated with a color format including a set of color channels, where the set of color channels includes at least one first channel and a second channel, where each of the set of pixels includes at least one first value for the at least one first channel and a second value for the second channel, where each pixel in a subset of pixels of the set of pixels includes the at least one first value that is different from other pixels in the subset of pixels, and where eachpixel in the subset of pixels includes the second value that is equal to the other pixels in the subset of pixels. The apparatus may also configure the second value for each pixel in the subset of pixels based on the set of pixels. Additionally, the apparatus may downsample the second value for the second channel for eachpixel in the subset of pixels. The apparatus may also perform a sub-sampling process on the second value for eachpixel in the subset of pixels, where the sub-sampling process is associated with a reduced sampling rate in a horizontal direction and a vertical direction. Moreover, the apparatus may adjust the reduced sampling rate in the horizontal direction and the vertical direction in order to match a bit alignment for the set of pixels. The apparatus may also output a second indication of the image including the configured second value for each pixel in the subset of pixels.

[0008] The details of one or more examples of the disclosure are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the disclosure will be apparent from the description and drawings, and from the claims.BRIEF DESCRIPTION OF DRAWINGS

[0009] FIG. 1 is a block diagram that illustrates an example content generation system.

[0010] FIG. 2 illustrates an example graphics processing unit (GPU) .

[0011] FIG. 3 illustrates an example display framework including a display processor and a display.

[0012] FIG. 4 is a diagram illustrating an example mask layer for display processing.

[0013] FIG. 5 is a diagram illustrating an example layer composition scheme for display processing.

[0014] FIG. 6 includes diagrams illustrating example visual effect issues for display devices.

[0015] FIG. 7 is a diagram illustrating an example group of pixels.

[0016] FIG. 8 is a diagram illustrating an example downsampling or subsampling process for pixels.

[0017] FIG. 9 is a communication flow diagram illustrating example communications between a GPU, a DPU, and a memory.

[0018] FIG. 10 is a flowchart of an example method of image processing.

[0019] FIG. 11 is a flowchart of an example method of image processing.DETAILED DESCRIPTION

[0020] Certain types of color formats or (e.g., floating point (FP) formats or FP 16 format) may solve the aforementioned visual issues (e.g., display flicker issues) . However, these types of color formats or FP formats (e.g., FP16 format) may have significant power consumption and memory consumption that is detrimental to devices. Other types of color format (e.g., red (R) green (G) blue (B) alpha (A) (RGBA) RGBA10101010 format) may be potentially helpful, but there may be a challenge with the compatibility of the operating system (OS) and / or rendering engine. Further, some types of color format (e.g., RGBA10101010 format) may have too many bits (e.g., too many bits allocated for the alpha (A) value) that may consume too much power. That is, for some frame buffer targets (e.g., frame buffer target for RGBA1010102 format) a 2-bit alpha value may not be sufficient, while other frame buffer targets (e.g., frame buffer target for RGBA10101010 format or FP16 format) may need additional bits and have power issues. As indicated herein, increasing the amount of bits utilized (e.g., bits allocated for the alpha (A) value) may increase the overall visual quality of the display device, but also increase the overall power consumption at the display device. Further, decreasing the amount of bits utilized for color formats (e.g., bits allocated for the alpha (A) value) may decrease the overall power consumption at the display device, but decrease the overall visual quality of the display device. Aspects of the present disclosure may provide a balanced and efficient approach to utilizing each bit in different color formats for display devices. For instance, aspects presented herein may efficiently utilize eachbit in certain types of color formats (e.g., an RGBA format including RGBA pixels) . Additionally,  aspects of the present disclosure may effectively balance performance and power consumption ata device when displaying certain types of color formats. For example, aspects of the present disclosure may balance performance and power consumption at the device when utilizing certain types of display formats (e.g., high dynamic range (HDR) video playback) with certain types of display features (e.g., a dimming feature) . That is, aspects presented herein may utilize a certain type of color format (e.g., 10-bit RGBA formant or RGBA 1010102 format) including a downsampled channel or spatially sub-sampled channel (e.g., alpha channel) . By doing so, aspects presented herein may provide visual / power optimizations for color / pixel blending (e.g., alpha blending) .

[0021] Aspects of the present disclosure may include a number of benefits or advantages. For instance, aspects presented herein may also efficiently utilize each bit in certain types of color formats (e.g., an RGBA format including RGBA pixels) . That is, aspects presented herein may optimize the usage of each bit for each RGBA pixel. Aspects presented herein may also provide an efficient balance between power usage and visual quality. For example, aspects of the present disclosure may balance performance and power consumption at the device when utilizing certain types of display formats (e.g., HDR video playback) with certain types of display features (e.g., a dimming feature) . Further, aspects presented herein may meet specific types of buffer alignment conditions (e.g., GPU / CPU / DSP buffer alignment conditions) . Additionally, aspects presented herein may utilize a novel spatial sub-sampling approach for alpha channels in certain color formants (e.g., an RGBA format) . This may be helpful when processing alpha values for certain color formants (e.g., an RGBA format) .

[0022] Various aspects of systems, apparatuses, computer program products, and methods are described more fully hereinafter with reference to the accompanying drawings. This disclosure may, however, be embodied in many different forms and should not be construed as limited to any specific structure or function presented throughout this disclosure. Rather, these aspects are provided so that this disclosure will be thorough and complete, and will fully convey the scope of this disclosure to those skilled in the art. Based on the teachings herein one skilled in the art should appreciate that the scope of this disclosure is intended to cover any aspect of the systems, apparatuses, computer program products, and methods disclosed herein, whether implemented independently of, or combined with, other aspects of the disclosure. For example, an  apparatus may be implemented or a method may be practiced using any number of the aspects set forth herein. In addition, the scope of the disclosure is intended to cover such an apparatus or method which is practiced using other structure, functionality, or structure and functionality in addition to or other than the various aspects of the disclosure set forth herein. Any aspect disclosed herein may be embodied by one or more elements of a claim.

[0023] Although various aspects are described herein, many variations and permutations of these aspects fall within the scope of this disclosure. Although some potential benefits and advantages of aspects of this disclosure are mentioned, the scope of this disclosure is not intended to be limited to particular benefits, uses, or objectives. Rather, aspects of this disclosure are intended to be broadly applicable to different wireless technologies, system configurations, networks, and transmission protocols, some of which are illustrated by way of example in the figures and in the following description. The detailed description and drawings are merely illustrative of this disclosure rather than limiting, the scope of this disclosure being defined by the appended claims and equivalents thereof.

[0024] Several aspects are presented with reference to various apparatus and methods. These apparatus and methods are described in the following detailed description and illustrated in the accompanying drawings by various blocks, components, circuits, processes, algorithms, and the like (collectively referred to as “elements” ) . These elements may be implemented using electronic hardware, computer software, or any combination thereof. Whether such elements are implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system.

[0025] By way of example, an element, or any portion of an element, or any combination of elements may be implemented as a “processing system” that includes one or more processors (which may also be referred to as processing units) . Examples of processors include microprocessors, microcontrollers, graphics processing units (GPUs) , general purpose GPUs (GPGPUs) , central processing units (CPUs) , application processors, digital signal processors (DSPs) , reduced instruction set computing (RISC) processors, systems-on-chip (SOC) , baseband processors, application specific integrated circuits (ASICs) , field programmable gate arrays (FPGAs) , programmable logic devices (PLDs) , state machines, gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various  functionality described throughout this disclosure. One or more processors in the processing system may execute software. Software may be construed broadly to mean instructions, instruction sets, code, code segments, program code, programs, subprograms, software components, applications, software applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, functions, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise. The term application may refer to software. As described herein, one or more techniques may refer to an application, i.e., software, being configured to perform one or more functions. In such examples, the application may be stored on a memory, e.g., on-chip memory of a processor, system memory, or any other memory. Hardware described herein, such as a processor may be configured to execute the application. For example, the application may be described as including code that, when executed by the hardware, causes the hardware to perform one or more techniques described herein. As an example, the hardware may access the code from a memory and execute the code accessed from the memory to perform one or more techniques described herein. In some examples, components are identified in this disclosure. In such examples, the components may be hardware, software, or a combination thereof. The components may be separate components or sub-components of a single component.

[0026] Accordingly, in one or more examples described herein, the functions described may be implemented in hardware, software, or any combination thereof. Ifimplemented in software, the functions may be stored on or encoded as one or more instructions or code on a computer-readable medium. Computer-readable media includes computer storage media. Storage media may be any available media that may be accessed by a computer. By way of example, andnot limitation, such computer-readable media may comprise a random access memory (RAM) , a read-only memory (ROM) , an electrically erasable programmable ROM (EEPROM) , optical disk storage, magnetic disk storage, other magnetic storage devices, combinations of the aforementioned types of computer-readable media, or any other medium that may be used to store computer executable code in the form of instructions or data structures that may be accessedby a computer.

[0027] In general, this disclosure describes techniques for having a graphics processing pipeline in a single device or multiple devices, improving the rendering of graphical content, and / or reducing the load of a processing unit, i.e., any processing unit  configured to perform one or more techniques described herein, such as a GPU. For example, this disclosure describes techniques for graphics processing in any device that utilizes graphics processing. Other example benefits are described throughout this disclosure.

[0028] As used herein, instances of the term “content” may refer to “graphical content, ” “image, ” and vice versa. This is true regardless of whether the terms are being used as an adjective, noun, or other parts of speech. In some examples, as used herein, the term “graphical content” may refer to a content produced by one or more processes of a graphics processing pipeline. In some examples, as used herein, the term “graphical content” may refer to a content produced by a processing unit configured to perform graphics processing. In some examples, as usedherein, the term “graphical content” may refer to a content produced by a graphics processing unit.

[0029] In some examples, as used herein, the term “display content” may refer to content generated by a processing unit configured to perform displaying processing. In some examples, as used herein, the term “display content” may refer to content generated by a display processing unit. Graphical content may be processed to become display content. For example, a graphics processing unit may output graphical content, such as a frame, to a buffer (which may be referred to as a framebuffer) . A display processing unit may read the graphical content, such as one or more frames from the buffer, and perform one or more display processing techniques thereon to generate display content. For example, a display processing unit may be configured to perform composition on one or more rendered layers to generate a frame. As another example, a display processing unit may be configured to compose, blend, or otherwise combine two or more layers together into a single frame. A display processing unit may be configured to perform scaling, e.g., upscaling or downscaling, on a frame. In some examples, a frame may refer to a layer. In other examples, a frame may refer to two or more layers that have already been blended together to form the frame, i.e., the frame includes two or more layers, and the frame that includes two or more layers may subsequently be blended.

[0030] FIG. 1 is a block diagram that illustrates an example content generation system 100 configured to implement one or more techniques of this disclosure. The content generation system 100 includes a device 104. The device 104 may include one or more components or circuits for performing various functions described herein. In some examples, one or more components of the device 104 may be components of an  SOC. The device 104 may include one or more components configured to perform one or more techniques of this disclosure. In the example shown, the device 104 may include a processing unit 120, a content encoder / decoder 122, and a system memory 124. In some aspects, the device 104 may include a number of components, e.g., a communication interface 126, a transceiver 132, a receiver 128, a transmitter 130, a display processor 127, and one or more displays 131. Reference to the display 131 mayreferto the one or more displays 131. For example, the display 131 may include a single display or multiple displays. The display 131 may include a first display and a second display. The first display may be a left-eye display and the second display may be a right-eye display. In some examples, the first and second display may receive different frames for presentment thereon. In other examples, the first and second display may receive the same frames for presentment thereon. In further examples, the results of the graphics processing may not be displayed on the device, e.g., the first and second display may not receive any frames for presentment thereon. Instead, the frames or graphics processing results may be transferred to another device. In some aspects, this may be referredto as split-rendering.

[0031] The processing unit 120 may include an internal memory 121. The processing unit 120 may be configured to perform graphics processing, such as in a graphics processing pipeline 107. The content encoder / decoder 122 may include an internal memory 123. In some examples, the device 104 may include a display processor, such as the display processor 127, to perform one or more display processing techniques on one or more frames generated by the processing unit 120 before presentment by the one or more displays 131. The display processor 127 may be configured to perform display processing. For example, the display processor 127 may be configured to perform one or more display processing techniques on one or more frames generated by the processing unit 120. The one or more displays 131 may be configured to display or otherwise present frames processed by the display processor 127. In some examples, the one or more displays 131 may include one or more of: a liquid crystal display (LCD) , a plasma display, an organic light emitting diode (OLED) display, a projection display device, an augmented reality display device, a virtual reality display device, a head-mounted display, or any other type of display device.

[0032] Memory external to the processing unit 120 and the content encoder / decoder 122, such as system memory 124, may be accessible to the processing unit 120 and the  content encoder / decoder 122. For example, the processing unit 120 and the content encoder / decoder 122 may be configured to read from and / or write to external memory, such as the system memory 124. The processing unit 120 and the content encoder / decoder 122 may be communicatively coupled to the system memory 124 over a bus. In some examples, the processing unit 120 and the content encoder / decoder 122 may be communicatively coupled to each other over the bus or a different connection.

[0033] The content encoder / decoder 122 may be configured to receive graphical content from any source, such as the system memory 124 and / or the communication interface 126. The system memory 124 may be configured to store received encoded or decoded graphical content. The content encoder / decoder 122 may be configured to receive encoded or decoded graphical content, e.g., from the system memory 124 and / or the communication interface 126, in the form of encoded pixel data. The content encoder / decoder 122 may be configured to encode or decode any graphical content.

[0034] The internal memory 121 or the system memory 124 may include one or more volatile or non-volatile memories or storage devices. In some examples, internal memory 121 or the system memory 124 may include RAM, SRAM, DRAM, erasable programmable ROM (EPROM) , electrically erasable programmable ROM (EEPROM) , flash memory, a magnetic data media or an optical storage media, or any other type of memory.

[0035] The internal memory 121 or the system memory 124 may be a non-transitory storage medium according to some examples. The term “non-transitory” may indicate that the storage medium is not embodied in a carrier wave or a propagated signal. However, the term “non-transitory” should not be interpreted to mean that internal memory 121 or the system memory 124 is non-movable or that its contents are static. As one example, the system memory 124 may be removed from the device 104 and moved to another device. As another example, the system memory 124 may not be removable from the device 104.

[0036] The processing unit 120 may be a central processing unit (CPU) , a graphics processing unit (GPU) , a general purpose GPU (GPGPU) , or any other processing unit that may be configured to perform graphics processing. In some examples, the processing unit 120 may be integrated into amotherboard of the device 104. In some examples, the processing unit 120 may be present on a graphics card that is installed in a port in a motherboard of the device 104, or may be otherwise incorporated within  a peripheral device configured to interoperate with the device 104. The processing unit 120 may include one or more processors, such as one or more microprocessors, GPUs, application specific integrated circuits (ASICs) , field programmable gate arrays (FPGAs) , arithmetic logic units (ALUs) , digital signal processors (DSPs) , discrete logic, software, hardware, firmware, other equivalent integrated or discrete logic circuitry, or any combinations thereof. If the techniques are implemented partially in software, the processing unit 120 may store instructions for the software in a suitable, non-transitory computer-readable storage medium, e.g., internal memory 121, and may execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Any of the foregoing, including hardware, software, a combination of hardware and software, etc., may be considered to be one or more processors.

[0037] The content encoder / decoder 122 may be any processing unit configured to perform content decoding. In some examples, the content encoder / decoder 122 may be integrated into a motherboard of the device 104. The content encoder / decoder 122 may include one or more processors, such as one or more microprocessors, application specific integrated circuits (ASICs) , field programmable gate arrays (FPGAs) , arithmetic logic units (ALUs) , digital signal processors (DSPs) , video processors, discrete logic, software, hardware, firmware, other equivalent integrated or discrete logic circuitry, or any combinations thereof. If the techniques are implemented partially in software, the content encoder / decoder 122 may store instructions for the software in a suitable, non-transitory computer-readable storage medium, e.g., internal memory 123, and may execute the instructions in hardware using one or more processors to perform the techniques of this disclosure. Any of the foregoing, including hardware, software, a combination of hardware and software, etc., may be considered to be one or more processors.

[0038] In some aspects, the content generation system 100 may include a communication interface 126. The communication interface 126 may include a receiver 128 and a transmitter 130. The receiver 128 may be configured to perform any receiving function described herein with respect to the device 104. Additionally, the receiver 128 may be configured to receive information, e.g., eye or head position information, rendering commands, or location information, from another device. The transmitter 130 may be configured to perform any transmitting function described herein with respect to the device 104. For example, the transmitter 130 may be configured to  transmit information to another device, which may include a request for content. The receiver 128 and the transmitter 130 may be combined into a transceiver 132. In such examples, the transceiver 132 may be configured to perform any receiving function and / or transmitting function described herein with respectto the device 104.

[0039] Referring again to FIG. 1, in certain aspects, the processing unit 120 may include a downsampling component 198 configured to obtain a first indication of an image including a set of pixels, where the set of pixels is associated with a color format including a set of color channels, where the set of color channels includes at least one first channel and a second channel, where each of the set of pixels includes at least one first value for the at least one first channel and a second value for the second channel, where eachpixel in a subset of pixels of the set of pixels includes the at least one first value that is different from other pixels in the subset of pixels, and where each pixel in the subset of pixels includes the second value that is equal to the other pixels in the subset of pixels. The downsampling component 198 may also be configured to configure the second value for each pixel in the subset of pixels based on the set of pixels. The downsampling component 198 may also be configured to downsample the second value for the second channel for each pixel in the subset of pixels. The downsampling component 198 may also be configured to perform a sub-sampling process on the second value for eachpixel in the subset of pixels, where the sub-sampling process is associated with a reduced sampling rate in a horizontal direction and a vertical direction. The downsampling component 198 may also be configured to adjust the reduced sampling rate in the horizontal direction and the vertical direction in order to match a bit alignment for the set of pixels. The downsampling component 198 may also be configured to output a second indication of the image including the configured second value for each pixel in the subset of pixels. Although the following description may be focused on display processing, the concepts described herein may be applicable to other similar processing techniques.

[0040] As described herein, a device, such as the device 104, may refer to any device, apparatus, or system configured to perform one or more techniques described herein. For example, a device may be a server, a base station, user equipment, a client device, a station, an access point, a computer, e.g., a personal computer, a desktop computer, a laptop computer, a tablet computer, a computer workstation, or a mainframe computer, an end product, an apparatus, a phone, a smart phone, a server, a video game platform or console, a handheld device, e.g., a portable video game device or a  personal digital assistant (PDA) , a wearable computing device, e.g., a smart watch, an augmented reality device, or a virtual reality device, a non-wearable device, a display or display device, a television, a television set-top box, an intermediate network device, a digital media player, a video streaming device, a content streaming device, an in-car computer, any mobile device, any device configured to generate graphical content, or any device configured to perform one or more techniques described herein. Processes herein may be described as performed by a particular component (e.g., a GPU) , but, in further embodiments, may be performed using other components (e.g., a CPU) , consistent with disclosed embodiments.

[0041] GPUs may process multiple types of data or data packets in a GPU pipeline. For instance, in some aspects, a GPU may process two types of data or data packets, e.g., context register packets and draw call data. A context register packet may be a set of global state information, e.g., information regarding a global register, shading program, or constant data, which may regulate how a graphics context will be processed. For example, context register packets may include information regarding a color format. In some aspects of context register packets, there may be a bit that indicates which workload belongs to a context register. Also, there may be multiple functions or programming running at the same time and / or in parallel. For example, functions or programming may describe a certain operation, e.g., the color mode or color format. Accordingly, a context register may define multiple states of a GPU.

[0042] Context states may be utilized to determine how an individual processing unit functions, e.g., a vertex fetcher (VFD) , a vertex shader (VS) , a shader processor, or a geometry processor, and / or in what mode the processing unit functions. In order to do so, GPUs may use context registers and programming data. In some aspects, a GPU may generate a workload, e.g., a vertex or pixel workload, in the pipeline based on the context register definition of a mode or state. Certain processing units, e.g., a VFD, may use these states to determine certain functions, e.g., how a vertex is assembled. As these modes or states may change, GPUs may need to change the corresponding context. Additionally, the workload that corresponds to the mode or state may follow the changing mode or state.

[0043] FIG. 2 illustrates an example GPU 200 in accordance with one or more techniques of this disclosure. As shown in FIG. 2, GPU200 includes command processor (CP) 210, draw call packets 212, VFD 220, VS 222, vertex cache (VPC) 224, triangle setup engine (TSE) 226, rasterizer (RAS) 228, Z process engine (ZPE) 230, pixel  interpolator (PI) 232, fragment shader (FS) 234, render backend (RB) 236, level 2 (L2) cache (UCHE) 238, and system memory 240. Although FIG. 2 displays that GPU 200 includes processing units 220-238, GPU 200 may include a number of additional processing units. Additionally, processing units 220-238 are merely an example and any combination or order of processing units may be used by GPUs according to the present disclosure. GPU 200 also includes command buffer 250, context register packets 260, and context states 261.

[0044] As shown in FIG. 2, a GPU may utilize a CP, e.g., CP 210, or hardware accelerator to parse a command buffer into context register packets, e.g., context register packets 260, and / or draw call data packets, e.g., draw call packets 212. The CP 210 may then send the context register packets 260 or draw call packets 212 through separate paths to the processing units or blocks in the GPU. Further, the command buffer 250 may alternate different states of context registers and draw calls. For example, a command buffer may be structured in the following manner: context register of context N, draw call (s) of context N, context register of context N+1, and draw call (s) of context N+1.

[0045] GPUs may render images in a variety of different ways. In some instances, GPUs may render an image using rendering and / or tiled rendering. In tiled rendering GPUs, an image may be divided or separated into different sections or tiles. After the division of the image, each section or tile may be rendered separately. Tiled rendering GPUs may divide computer graphics images into a grid format, such that each portion of the grid, i.e., a tile, is separately rendered. In some aspects, during a binning pass, an image may be divided into different bins or tiles. In some aspects, during the binning pass, a visibility stream may be constructed where visible primitives or draw calls may be identified. In contrast to tiled rendering, direct rendering does not divide the frame into smaller bins or tiles. Rather, in direct rendering, the entire frame is rendered at a single time. Additionally, some types of GPUs may allow for both tiled rendering and direct rendering.

[0046] FIG. 3 is a block diagram 300 that illustrates an example display framework including the processing unit 120, the system memory 124, the display processor 127, and the display (s) 131, as may be identified in connection with the device 104.

[0047] A GPU may be included in devices that provide content for visual presentation on a display. For example, the processing unit 120 may include a GPU 310 configured to render graphical data for display on a computing device (e.g., the device 104) , which may be a computer workstation, a mobile phone, a smartphone or other smart device,  an embedded system, a personal computer, a tablet computer, a video game console, and the like. Operations of the GPU 310 may be controlled based on one or more graphics processing commands provided by a CPU 315. The CPU 315 may be configured to execute multiple applications concurrently. In some cases, each of the concurrently executed multiple applications may utilize the GPU 310 simultaneously. Processing techniques may be performed via the processing unit 120 output a frame over physical or wireless communication channels.

[0048] The system memory 124, which may be executed by the processing unit 120, may include a user space 320 and a kernel space 325. The user space 320 (sometimes referred to as an “application space” ) may include software application (s) and / or application framework (s) . For example, software application (s) may include operating systems, media applications, graphical applications, workspace applications, etc. Application framework (s) may include frameworks used by one or more software applications, such as libraries, services (e.g., display services, input services, etc. ) , application program interfaces (APIs) , etc. The kernel space 325 may further include a display driver 330. The display driver 330 may be configured to control the display processor 127. For example, the display driver 330 may cause the display processor 127 to compose a frame and transmit the data for the frame to a display.

[0049] The display processor 127 includes a display control block 335 and a display interface 340. The display processor 127 may be configured to manipulate functions of the display (s) 131 (e.g., based on an input received from the display driver 330) . The display control block 335 may be further configured to output image frames to the display (s) 131 via the display interface 340. In some examples, the display control block 335 may additionally or alternatively perform post-processing of image data provided based on execution of the system memory 124 by the processing unit 120.

[0050] The display interface 340 may be configured to cause the display (s) 131 to display image frames. The display interface 340 may output image data to the display (s) 131 according to an interface protocol, such as, for example, the MIPI DSI (Mobile Industry Processor Interface, Display Serial Interface) . That is, the display (s) 131, may be configured in accordance with MIPI DSI standards. The MIPI DSI standard supports a video mode and a command mode. In examples where the display (s) 131 is / are operating in video mode, the display processor 127 may continuously refresh the graphical content of the display (s) 131. For example, the entire graphical content  may be refreshed per refresh cycle (e.g., line-by-line) . In examples where the display (s) 131 is / are operating in command mode, the display processor 127 may write the graphical content of a frame to a buffer 350.

[0051] In some such examples, the display processor 127 may not continuously refresh the graphical content of the display (s) 131. Instead, the display processor 127 may use a vertical synchronization (Vsync) pulse to coordinate rendering and consuming of graphical content at the buffer 350. For example, when a Vsync pulse is generated, the display processor 127 may output new graphical content to the buffer 350. Thus, generation of the Vsync pulse may indicate that current graphical content has been rendered at the buffer 350.

[0052] Frames are displayed atthe display (s) 131 based on a display controller 345, a display client 355, and the buffer 350. The display controller 345 may receive image data from the display interface 340 and store the received image data in the buffer 350. In some examples, the display controller 345 may output the image data stored in the buffer 350 to the display client 355. Thus, the buffer 350 may represent a local memory to the display (s) 131. In some examples, the display controller 345 may output the image data received from the display interface 340 directly to the display client 355.

[0053] The display client 355 may be associated with a touch panel that senses interactions between a user and the display (s) 131. As the user interacts with the display (s) 131, one or more sensors in the touch panel may output signals to the display controller 345 that indicate which of the one or more sensors have sensor activity, a duration of the sensor activity, an applied pressure to the one or more sensor, etc. The display controller 345 may use the sensor outputs to determine a manner in which the user has interacted with the display (s) 131. The display (s) 131 may be further associated with / include other devices, such as a camera, a microphone, and / or a speaker, that operate in connection with the display client 355.

[0054] Some processing techniques of the device 104 may be performed over three stages (e.g., stage 1: a rendering stage; stage 2: a composition stage; and stage 3: a display / transfer stage) . However, other processing techniques may combine the composition stage and the display / transfer stage into a single stage, such that the processing technique may be executed based on two total stages (e.g., stage 1: the rendering stage; and stage 2: the composition / display / transfer stage) . During the rendering stage, the GPU 310 may process a content buffer based on execution of an  application that generates content on a pixel-by-pixel basis. During the composition and display stage (s) , pixel elements may be assembled to form a frame that is transferred to a physical display panel / subsystem (e.g., the displays 131) that displays the frame.

[0055] Instructions executed by a CPU (e.g., software instructions) or a display processor may cause the CPU or the display processor to search for and / or generate a composition strategy for composing a frame based on a dynamic priority and runtime statistics associated with one or more composition strategy groups. A frame to be displayed by a physical display device, such as a display panel, may include a plurality of layers. Also, composition of the frame may be based on combining the plurality of layers into the frame (e.g., based on a frame buffer) . After the plurality of layers are combined into the frame, the frame may be provided to the display panel for display thereon. The process of combining each of the plurality of layers into the frame may be referred to as composition, frame composition, a composition procedure, a composition process, or the like.

[0056] A frame composition procedure or composition strategy may correspond to a technique for composing different layers of the plurality of layers into a single frame. The plurality of layers may be stored in doubled data rate (DDR) memory. Each layer of the plurality of layers may further correspond to a separate buffer. A composer or hardware composer (HWC) associated with a block or function may determine an input of each layer / buffer and perform the frame composition procedure to generate an output indicative of a composed frame. That is, the input may be the layers and the output may be a frame composition procedure for composing the frame to be displayed on the display panel.

[0057] Some aspects of display processing may utilize different types of mask layers, e.g., a shape mask layer. A mask layer is a layer that may represent a portion of a display or display panel. For instance, an area of a mask layer may correspond to an area of a display, but the entire mask layer may depict a portion of the content that is actually displayed at the display or panel. For example, a mask layer may include a top portion and a bottom portion of a display area, but the middle portion of the mask layer may be empty. In some examples, there may be multiple mask layers to represent different portions of a display area. Also, for certain portions of a display area, the content of different mask layers may overlap with one another. Accordingly, a mask layer may  represent a portion of a display area that may or may not overlap with other mask layers.

[0058] FIG. 4 is a diagram 400 illustrating an example mask layer for display processing. More specifically, diagram 400 depicts one type of mask layer that may represent portions of a display panel. As shown in FIG. 4, diagram 400 includes mask layer 402 including top regions 410 and bottom regions 420. Top regions 410 include region 411, region 412, region 413, and region 414, andbottom regions 420 include region 421, region 422, region 423, and region 424. As depicted in FIG. 4, mask layer 402 may represent the different regions that are displayed on a display panel.

[0059] Some types of displays may use a certain type of mask layer (e.g., a shape mask layer) to reshape a display frame. For instance, a mask layer may reshape the display frame to provide more optimized visual shapes at the display panel (e.g., improved round corners, improved circular shape, improved rectangular shape, etc. ) . These types of mask layers (e.g., shape mask layers) may be processed by software (e.g., graphics processing unit (GPU) software or central processing unit (CPU) software) or by hardware (e.g., display processing unit (DPU) hardware) . Also, these mask layers may be processedby other specific types of hardware logic modules (e.g., modules in a display driver integrated circuit (DDIC) or bridge chips) . In some aspects, these types of mask layers (e.g., shape mask layers) may be based on certain unit, such as a pixel. That is, the shape generation basis unit of the shape mask layers may be a single pixel.

[0060] Some aspects of display processing may utilize frame buffers to cache or store a composition output of a GPU. For instance, display layers may be cached or stored in a frame buffer after composition at a GPU. In some aspects, a composition hardware (HW) or software (SW) stack may use a frame buffer target to cache a composition output (e.g., a GPU composition output or a CPU composition output) . The cached composition output may then be sent to another processor (e.g., a DPU) as an input layer. The frame buffer may have a number of different color formats, such as a red (R) green (G) blue (B) alpha (A) (RGBA) format (e.g., RGBA8888 format) . Also, the frame buffer may be a certain size (e.g., a 32-bit triple buffer) . For example, at the beginning of a display / graphics subsystem design, a frame buffer may be created as an RGBA8888 format and a 32-bit triple buffer. In some instances, if the frame layers do not use a certain composition (e.g., a GPU or client composition) , the frame buffers may be ignored. Also, the layers (e.g., frame layers or display layers  associated with display processing) may be directly fetched and composed. For instance, aDPUor hardware composer may directly fetchthe layers and then compose the layers.

[0061] FIG. 5 is a diagram 500 illustrating an example of a layer composition scheme for display processing. More specifically, diagram 500 depicts a layer composition of display layers where certain layers (e.g., layers of a certain composition) are cached in a frame buffer, and some layers are directly fetched and composed by a DPU. As shown in FIG. 5, diagram 500 includes layer 510, layer 511, layer 512, layer 513, frame buffer 530 (e.g., an RGBA8888 format frame buffer) , DPU 540, and display 550. FIG. 5 depicts that layers composed at a GPU (i.e., layers associated with GPU composition) may be cached or stored in a frame buffer. For example, layer 510, layer 511, and layer 512 may be composed at a GPU and then cached / stored at frame buffer 530. Alternatively, layers that are not composed at a GPU (i.e., layers associated with non-GPU composition) may be directly fetched and composed at a DPU. For instance, layer 513 may be directly fetched and composed at DPU 540. That is, layer 510, layer 511, and layer 512 may be a certain type of composition (e.g., GPU composition) , while layer 513 may be another type of composition (non-GPU composition) . Afterbeing cached / storedin frame buffer 530, the layer 510, layer 511, and layer 512 may be sent to DPU 540. Further, after processing at DPU 540, the layers 510-513 may be sent to display 550.

[0062] In some aspects, certain types of frame buffers (e.g., a single format 32-bit RGBA8888 frame buffer) may correspond to a reduced display quality (e.g., poor composition performance, poor power performance, poor color management, and / or poor visual quality) . For instance, certain types of frame buffer composition (e.g., a single format 32-bit RGBA8888 frame buffer composition) may not be able to match certain power / performance specifications of certain displays (e.g., a high flame rate, high layer complexity, frame geometry, standard dynamic range (SDR)  / high dynamic range (HDR) ) , such as color management and mobile system performance / power specifications of certain displays. Some types of layer formats (e.g., a floating-point 16-bit (FP16) format, an integer 12-bit (INT12) format, an integer 10-bit (INT10) format) may lose details (e.g., color and geometry details) for certain types of composition (e.g., a 32-bit RGBA8888 GPU composition) . For example, if 4 bytes are maintained and a 32-bit buffer alignment is not changed (e.g., an RGBA1010102 buffer) , the alpha channel (e.g., a 2-bit alpha channel) may not be sufficient to  maintain a certain level of detail Additionally, if a direct change is made to the frame buffer (e.g., a change to an RGBA FP16161616 8-byte format) , the power / performance cost may be high. In some aspects, if the frame buffer is tagged as SDR, it may fail to meet an HDR layer composition specification. Also, if the frame buffer is tagged as HDR, it may fail to meet an SDR layer composition specification, as well as result in poor power / performance.

[0063] High dynamic range (HDR) content is high definition content that improves the quality of display signals, such as when compared to standard dynamic range (SDR) content. For example, HDR uses a dynamic color range that is higher than normal (e.g., SDR) content. HDR content helps to change the way the luminance and colors of videos / images are represented in signals. HDR also allows brighter and more detailed highlight representation, as well as darker, more-detailed shadows and a wider array of colors. That is, HDR content allows a higher variation in light levels within a scene or an image. For instance, HDR allows compatible displays to receive a higher quality image source, but the content cannot improve the intrinsic properties (e.g., brightness, contrast, and color) of the display device. Accordingly, HDR content may appear different depending on the type of display used.

[0064] A variety of different types of HDR content can be used in image and frame processing. For instance, 10-bit HDR content is widely used, as well as wide color gamut and other types of HDR contents. Also, certain types of digital dimming may be used along with HDR content. Digital dimming may be the process of dimming content (e.g., HDR content) when displayed on digital devices. For example, user interface (UI) digital dimming may be utilized for 10-bit HDR content during HDR video playback. During digital dimming, an original equipment manufacturer (OEM) may utilize one dimming layer for slowly changing a gray level to control the dimming effect. By doing so, this may force some types of layers (e.g., all UI layers) to utilize client composition (e.g., GPU composition) , while other types of layers (e.g., HDR video layers) may utilize device composition (e.g., DPU composition) . For example, for some types of frame buffer targets (FBTs) (e.g., an 8-bit frame buffer target (FBT) or RGBA8888 format) with GPU composition, the dimming effect or gray transition may not be smooth. Also, for other types of FBTs (e.g., 10-bit FBT or RGBA1010102 format) , the dimming effect or gray transition may be smooth, but there may be several UI visual effect issues. This may be caused by alpha (A) blending issues in a last-step device composition (e.g., DPUcomposition) , which may  be due to insufficient precision of the alpha value for certain formants (e.g., RGBA1010102 format) . For example, RGBA1010102 format may utilize just 2 bits for alpha value, which may be insufficient precision for these types of formats. That is, there are 10 bits for the RGB values, which may be sufficient for the transition, but 2 bits for the alpha (A) value may be insufficient to avoid blending issues. Indeed, this lower bit allocation for the alpha (A) value may cause visual effect issues in the final step of display composition.

[0065] FIG. 6 includes a diagram 600 and diagram 650 illustrating example visual effect issues for display devices. More specifically, diagram 600 and diagram 650 depict visual effect issues that may be caused by incorrect allocation of certain bits (e.g., an alpha (A) bit) . As shown in FIG. 6, diagram 600 includes display device 610 including screen 620 and pop-out window 630. Diagram 600 depicts that pop-out window 630 may be displayed on screen 620 as a visual effect issue caused by an incorrect allocation of certain bits (e.g., an alpha (A) bit) during color blending (e.g., alpha blending) . For example, pop-out window 630 may be one type of visual effect issue that is caused while displaying HDR video playback. Moreover, as illustrated in FIG. 6, diagram 650 includes display device 660 including screen 670 including a display flickering issue. Diagram 650 depicts that the flickering issue may be displayed on screen 670 as a visual effect issue caused by an incorrect allocation of certain bits (e.g., an alpha (A) bit) during color blending (e.g., alpha blending) . For example, the flickering issue on screen 670 may be one type of visual effect issue that is caused while displaying HDR video playback.

[0066] Certain types of color formats or (e.g., floating point (FP) formats or FP 16 format) may solve the aforementioned visual issues (e.g., display flicker issues) . However, these types of color formats or FP formats (e.g., FP16 format) may have significant power consumption and memory consumption that is detrimental to devices. Other types of color format (e.g., RGBA10101010 format) may be potentially helpful, but there may be a challenge with the compatibility of the operating system (OS) and / or rendering engine. Further, some types of color format (e.g., RGBA10101010 format) may have too many bits (e.g., too many bits allocated for the alpha (A) value) that may consume too much power. That is, for some frame buffer targets (e.g., frame buffer target for RGBA1010102 format) a 2-bit alpha value may not be sufficient, while other frame buffer targets (e.g., frame buffer target for RGBA10101010 format or FP16 format) may need additional bits and have power issues. As indicated herein,  increasing the amount of bits utilized (e.g., bits allocated for the alpha (A) value) may increase the overall visual quality of the display device, but also increase the overall power consumption at the display device. Further, decreasing the amount of bits utilized for color formats (e.g., bits allocated for the alpha (A) value) may decrease the overall power consumption at the disphy device, but decrease the overall visual quality of the display device. Based on the above, it may be beneficial to provide a balanced approach that efficiently utilizes each bit in certain types of color formats (e.g., an RGBA format including RGBA pixels) . Also, it may be beneficial to balance performance and power consumption at the device when utilizing certain types of display formats (e.g., HDR video phyback) with certain types of display features (e.g., a dimming feature) .

[0067] Aspects of the present disclosure may provide a balanced and efficient approach to utilizing each bit in different color formats for display devices. For instance, aspects presented herein may efficiently utilize each bit in certain types of color formats (e.g., an RGBA format including RGBA pixels) . Additionally, aspects of the present disclosure may effectively balance performance and power consumption at a device when displaying certain types of color formats. For example, aspects of the present disclosure may balance performance and power consumption at the device when utilizing certain types of display formats (e.g., HDR video playback) with certain types of disphy features (e.g., a dimming feature) . That is, aspects presented herein may utilize a certain type of color format (e.g., 10-bit RGBA formant or RGBA 1010102 format) including a downsampled channel or spatially sub-sampled channel (e.g., alpha channel) . By doing so, aspects presented herein may provide visual / power optimizations for color / pixel blending (e.g., alpha blending) .

[0068] In some instances, aspects of the present disclosure may more efficiently balance certain bit values for color channels in the display process. For instance, aspects presented herein may balance the precision and memory size for channels in certain color formats (e.g., R / G / B / A channels in an RGBA color format) . Aspects presented herein may utilize an enhanced color format (e.g., an enhanced RGBA1010102 format) with a certain alpha (A) channel for pixels in the display process. In some aspects, the enhanced color format (e.g., an enhanced RGBA1010102 format) may consume a similar amount of bits or memory size as other color formats (e.g., an RGBA8888 format) , but provide a higher precision for R / G / B values and the alpha (A) value. Also, as the alpha (A) value difference between adjacent pixels may be  small, the alpha value difference may contribute an insignificant impact compared to an R / G / A value difference in the color blending result. As such, aspects presented herein may utilize downsampling or subsampling (sub-sampling) of the alpha (A) value in order to obtain some additional benefits power saving benefits. Additionally, aspects of the present disclosure may relate to optimization of power / visual balance of RGBA value precision and memory size. For instance, aspects presented herein may make efficient use of each bit of the RGBA pixels, i.e., factor in the power consumption and visual quality for each bit. For example, aspects presented herein propose an enhanced RGBA1010102 format, where each 2x2 pixel may be one compound block, each pixel in the block mayhave an independent 10 bits RGB value, but share the 8 bits alpha (A) value, with each pixel contributing 2 bits for the alpha (A) value. The spatial subsample rate may be variable to match different RGB bits alignment conditions. As compared to an RGBA8888 format, the enhanced RGBA1010102 format may consume the same bit / memory size, but provide a higher precision for both RGB value and alpha (A) value.

[0069] Additionally, in some aspects, each block of pixels (e.g., a 2x2 block of pixels) may be one compound block, where each pixel in the block has an independent R / G / B value (e.g., a 10-bit R / G / B value) and shares an alpha (A) (e.g., an 8-bit alpha (A) value) . In this instance, each pixel in the block may contribute a certain amount of bits for the overall alpha (A) value in the block (e.g., for an 8-bit alpha (A) value, each pixel may contribute 2 bits for the A value) . For example, in an enhanced RGBA1010102 format, each 2x2 block of pixels may correspond to one compound block, where each pixel in the block may have an independent 10-bit R / G / B value. Also, each pixel in the block may share an 8-bit alpha (A) value, such that each pixel in the block may contribute 2 bits to the alpha (A) value. That is, the 10-bits for the R / G / B values in the pixel block may be independent for each pixel, but the 8-bits for the alpha value in the pixel block may be shared between the pixels, such that each pixel contributes 2 bits towards the alpha value. Accordingly, each pixel in the block may contribute a 10-bit R value, a 10-bit G value, a 10-bit B value, and a 2-bit alpha (A) value, which corresponds to the enhanced RGBA1010102 format

[0070] In some aspects, certain channels in certain color formats (e.g., the R / G / B channels in an RGBA color format) may be associated with full-sampling and other channels in the color format (e.g., the alpha (A) value in an RGBA color format) may be associated with sub-sampling or downsampling. For instance, the RGB values in an  RGBA color format may be associated with full-sampling, and the alpha (A) value may be associated with sub-sampling (e.g., sub-sampling with a 0.5 rate in a horizontal direction and a vertical direction) or downsampling. In some aspects, the spatial sub-sample rate for the alpha (A) value may be variable to match different alignment conditions (e.g., RGB bit alignment conditions) . For example, the sub-sample rate for the alpha (A) value may be a 0.5 rate in a horizontal direction and a 0.5 rate in a vertical direction. Also, the sub-sample rate for the alpha (A) value may be a 0.5 rate in a horizontal direction and a full rate (e.g., 100%rate) in a vertical direction. Further, the sub-sample rate for the alpha (A) value may be a 0.25 rate in a horizontal direction and a 0.25 rate in a vertical direction. Moreover, the reduced sampling rate may be adjusted in the horizontal direction and the vertical direction in order to match a bit alignment for the remaining pixels.

[0071] In some aspects, as indicated above, the alpha (A) value for each pixel in a block of pixels in the image may be downsampled or subsampled (sub-sampled) . Downsampling may correspond to pixels in a sample area being replaced with an average pixel color. That is, downsampling may average the pixels in a sample area and then substitute the entire area with the average pixel color at the specified resolution. For example, to dowusample an alpha (A) value for a block of pixels, the average value of the alpha values for each pixel in the block of pixels may be calculated, and then the average value of the alpha values for each pixel in the block of pixels may be downsampled. Subsampling or sub-sampling may correspond to selecting a pixel and the surrounding area is replaced with that same pixel. That is, sub-sampling may choose a pixel in the center of the sample area and then substitute the entire area with the chosen pixel at the specified resolution. For example, to sub-sample an alpha (A) value for a block of pixels, a reduced sampling rate may be adjusted in a horizontal direction and a vertical direction in order to match a bit alignment for the set of pixels.

[0072] FIG. 7 is a diagram 700 illustrating an example group of pixels. More specifically, diagram 700 depicts an example group of RGBA pixels including an R / G / B value for each pixel and a shared alpha (A) . As shown in FIG. 7, diagram 700 includes a group of 4 pixels (e.g., RGBA pixel 710, RGBA pixel 711, RGBA pixel 712, and RGBA pixel 713) that each include alpha (A) value 720. FIG. 7 depicts that each of the pixels in the group (e.g., RGBA pixel 710, RGBA pixel 711, RGBA pixel 712, and RGBA pixel 713) may have an independent R / G / B value (e.g., a 10-bit R / G / B value) .  Further, each pixel in the group may share alpha (A) value 720 (e.g., an 8-bit alpha (A) value) , such that each pixel in the group may contribute number of bits (e.g., 2 bits) to the alpha (A) value 720. For example, the 10-bits for the R / G / B values in the pixel group (e.g., RGBA pixel 710, RGBA pixel 711, RGBA pixel 712, and RGBA pixel 713) may be independent for each pixel, but the 8-bits for the alpha value in the pixel block may be shared between the pixels, such that each pixel contributes 2 bits towards the alpha value. As such, each pixel in the group (e.g., RGBA pixel 710, RGBA pixel 711, RGBA pixel 712, and RGBA pixel 713) may contribute a 10-bit R value, a 10-bit G value, a 10-bit B value, and a 2-bit alpha (A) value, which corresponds to an enhanced color format (e.g., an enhanced RGBA1010102 format) .

[0073] In some instances, the enhanced color format (e.g., an enhanced RGBA1010102 format) may be utilized in a variety of pipelines and stages. For instance, the enhanced color format (e.g., an enhanced RGBA1010102 format) may be utilized as a frame buffer target format for composition outputs. In some aspects, the enhanced color format may be utilized as a render output layer for HDR graphics content. In some use cases, the application may use Open Graphics Library (OpenGL) in order to process HDR content. So aspects presented herein may utilize this enhanced color format for HDR content processed output. Aspects presented herein may also utilize the enhanced color format for digital brightness dimming control (e.g., digital brightness dimming control at the OEM side) . For other types of applications (e.g., CPU, GPU, native signal processing (NSP) hardware, and / or digital signal processing (DSP) hardware) , aspects presented herein may utilize the enhanced color format on 32-bit alignment buffers. Additionally, other types of digital systems may have specific bit alignment requests for utilizing the enhanced color format.

[0074] Aspects presented herein may also read / write a pre-pixel RGB value from / to this enhanced RGBA1010102 format. For instance, asRGB values arepixel independent, aspects presented herein may read / write the RGB value for each pixel directly without fetching data for other pixels. That is, aspects presented herein may obtain the alpha value directly from a pixel and not touch other adjacent pixels. Aspects presented herein may also read an alpha (A) value from the enhanced color format (e.g., enhanced RGBA1010102 format) . For instance, the alpha (A) value may be shared among pixels in a group (e.g., a 2x2 pixels block) , so aspects presented herein may read the alpha value from all of the pixels in the group (e.g., 4 pixels) and combine these values to obtain the final alpha value. For example, the 2-bit alpha (A) value  from each pixel may be combined to produce the final 8-bit alpha (A) value. As shown in FIG. 7, the total alpha value for RGBA pixels 710-713 = alpha (A) value 720 ofRGBA pixel 710 + alpha (A) value 720 ofRGBA pixel 711 + alpha (A) value 720 of RGBA pixel 712 + alpha (A) value 720 of RGBA pixel 713. Also, in some aspects, the total 8-bit alpha value = [alpha of pixel 713] << 6 + [alpha of pixel 712] << 4 + [alpha ofpixel 711] << 2 + [alpha of pixel 710] << 0. Additionally, aspects presented herein may write the alpha value to the enhanced color format (e.g., the enhanced RGBA1010102 format) . For instance, aspects presented herein may update the latest alpha (A) value to the pixel group (e.g., a 2x2 pixel block) and modify each pixel's alpha value (e.g., 2-bit alpha value) accordingly. In some aspects, if any alpha value of a pixel in the block needed to be updated, aspects presented herein may update the alpha value for the entire pixel block because the alpha values in the pixel block are shared. For example, a new alpha value may be updated for each pixel, such that the 8-bit alpha value may be divided into four pixels. As shown in FIG. 7, the alpha value of pixel 710 = (8-bit alpha >> 0) & 0x3; the alpha value of pixel 711 = (8-bit alpha >> 2) & 0x3; the alpha value ofpixel 712 = (8-bit alpha >> 4) & 0x3; and the alpha value ofpixel 713 = (8-bit alpha >> 6) & 0x3.

[0075] FIG. 8 is a diagram 800 illustrating an example downsampling or subsampling process for pixels. More specifically, diagram 800 depicts an example downsampling or subsampling for alpha values of pixels in an RGBA image. As shown in FIG. 8, diagram 800 includes GPU / DPU 802, RGBA image 810, downsampling / subsamp ling 820, and RGBA image 830. FIG. 8 depicts that GPU / DPU 802 receives an indication of RGBA image 810 including a set of pixels. GPU / DPU 802 then downsamples / subsamples the alpha value for each pixel in a subset of pixels in the set of pixels for RGBA image 810. This downsampling / subsampling 820 of the alpha value may result in RGBA image 830 that includes a downsampled / subsampled alpha value for each pixel in the subset of pixels. Next, GPU / DPU 802 transmits an indication of RGBA image 830 including the downsampled / subsampled alpha value for each pixel in the subset of pixels.

[0076] As shown in FIG. 8, GPU / DPU 802 may obtain a first indication of an image (e.g., RGBA image 810) including a set of pixels, where the set of pixels is associated with a color format (e.g., RGBA color format) including a set of color channels (e.g., RGBA channels) , where the set of color channels includes at least one first channel (e.g., R / G / B channels) and a second channel (e.g., alpha channel) , where each of the  set of pixels includes a first value (e.g., R / G / B value) for the at least one first channel and a second value (e.g., alpha value) for the second channel. In some aspects, each pixel in a subset of pixels (e.g., RGBA pixels 710-713) of the set of pixels includes the first value (e.g., R / G / B value) that is different from other pixels in the subset of pixels, and wherein each pixel in the subset of pixels (e.g., RGBA pixels 710-713) includes the second value (e.g., alpha value 720) that is equal to the other pixels in the subset of pixels. The GPU / DPU 802 may also configure (e.g., downsampling / subsampling 820) the second value (e.g., alpha value 720) for each pixel in the subset of pixels (e.g., RGBA pixels 710-713) based on the set of pixels (e.g., GPU / DPU 802 downsamples / subsamples the alpha value for each pixel in a subset of pixels in the set of pixels for RGBA image 810) . GPU / DPU 802 may also output a second indication of the image (e.g., indication of RGBA image 830) including the configured second value (e.g., downsampled / subsampled alpha value) for each pixel in the subset of pixels (e.g., RGBA pixels 710-713) .

[0077] In some aspects, when GPU / DPU 802 configures the second value (e.g., alpha value 720) for each pixel in the subset of pixels (e.g., RGBA pixels 710-713) , GPU / DPU 802 may downsample the second value (e.g., alpha value 720) for the second channel for each pixel in the subset of pixels. Also, downsampling the second value (e.g., alpha value 720) for each pixel in the subset of pixels (e.g., RGBA pixels 710-713) may include calculating an average value of the second value (e.g., alpha value 720) for each pixel in the subset of pixels; and downsampling the average value of the second value (e.g., alpha value 720) for each pixel in the subset of pixels.

[0078] Additionally, in some instances, the first value (e.g., R / G / B value) for each pixel in the subset of pixels (e.g., RGBA pixels 710-713) may be associated with a full sampling process, and the second value (e.g., alpha value 720) for each pixel in the subset of pixels may be associated with a sub-sampling process (e.g., downsampling / subsampling 820) . Also, in some aspects, when GPU / DPU 802 configures the second value (e.g., alpha value 720) for each pixel in the subset of pixels (e.g., RGBA pixels 710-713) , GPU / DPU 802 may perform the sub-sampling process (e.g., downsampling / subsampling 820) on the second value (e.g., alpha value 720) for each pixel in the subset of pixels (e.g., RGBA pixels 710-713) , where the sub-sampling process may be associated with a reduced sampling rate in a horizontal direction and a vertical direction. Further, performing the sub-sampling process (e.g., downsampling / subsampling 820) on the second value (e.g., alpha value 720) for each  pixel in the subset of pixels (e.g., RGBA pixels 710-713) may include adjusting the reduced sampling rate in the horizontal direction and the vertical direction in order to match a bit alignment for the set of pixels. Moreover, the reduced sampling rate may be at least one of: a 0.5 rate in the horizontal direction and the 0.5 rate in the vertical direction, the 0.5 rate in the horizontal direction and a full rate in the vertical direction, or a 0.25 rate in the horizontal direction and the 0.25 rate in the vertical direction.

[0079] Aspects of the present disclosure may include a number of benefits or advantages. For instance, aspects presented herein may also efficiently utilize each bit in certain types of color formats (e.g., an RGBA format including RGBA pixels) . That is, aspects presented herein may optimize the usage of each bit for each RGBA pixel. Aspects presented herein may also provide an efficient balance between power usage and visual quality. For example, aspects of the present disclosure may balance performance and power consumption at the device when utilizing certain types of display formats (e.g., HDR video playback) with certain types of display features (e.g., a dimming feature) . Further, aspects presented herein may meet specific types of buffer alignment conditions (e.g., GPU / CPU / DSP buffer alignment conditions) . Additionally, aspects presented herein may utilize a novel spatial sub-sampling approach for alpha channels in certain color formants (e.g., an RGBA format) . This may be helpful when processing alpha values for certain color formants (e.g., an RGBA format) .

[0080] FIG. 9 is a communication flow diagram 900 of image processing in accordance with one or more techniques of this disclosure. As shown in FIG. 9, diagram 900 includes example communications between GPU 902 (e.g., a graphics processor, a CPU, or other central processor) , DPU 904 (e.g., a display processor, an application, or a CPU) , and memory 906 (e.g., a memory or a cache at a GPU or DPU) , in accordance with one or more techniques of this disclosure.

[0081] At 910, GPU 902 may obtain a first indication of an image including a set of pixels (e.g., GPU 902 may obtain indication 912 from DPU 904) , where the set of pixels is associated with a color format including a set of color channels, where the set of color channels includes at least one first channel and a second channel, where each of the set of pixels includes at least one first value for the at least one first channel and a second value for the second channel, where each pixel in a subset of pixels of the set of pixels includes the at least one first value that is different from other pixels in the  subset of pixels, and where each pixel in the subset of pixels includes the second value that is equal to the other pixels in the subset of pixels.

[0082] In some aspects, the color format may be a red (R) green (G) blue (B) alpha (A) (RGBA) color format, where the at least one first channel may include an R channel, a G channel, and a B channel, where the second channel may include an alpha (A) channel, where the at least one first value may include an R value, a G value, and a B value, and where the second value may include an alpha (A) value. Also, the RGBA color format may be an RGBA1010102 format. Additionally, in some aspects, a total number of bits for the second value for the subset of pixels may be equally divided between each pixel in the subset of pixels. For instance, the subset of pixels may include 4 pixels, where the total number of bits for the second value for the subset of pixels may be equal to 8 bits, and where each pixel in the subset of pixels may include 2 bits. Further, in some aspects, a number of bits for the at least one first value of each pixel in the subset of pixels may be equal to a number of bits for the at least one first value of the other pixels in the subset of pixels. For instance, the number of bits for the at least one first value of each pixel in the subset of pixels may be equal to 10 bits.

[0083] At 920, GPU 902 may configure the second value for each pixel in the subset of pixels based on the set of pixels.

[0084] At 930, GPU 902 may downsample the second value for the second channel for each pixel in the subset of pixels. For instance, configuring the second value for each pixel in the subset of pixels may include (e.g., comprise) : downsampling the second value for the second channel for each pixel in the subset of pixels. Also, downsampling the second value for each pixel in the subset of pixels may include: calculating an average value of the second value for each pixel in the subset of pixels; and downsampling the average value of the second value for each pixel in the subset of pixels.

[0085] At 940, GPU 902 may perform a sub-sampling process on the second value (i.e., subsample the second value) for each pixel in the subset of pixels, where the sub-sampling process is associated with a reduced sampling rate in a horizontal direction and a vertical direction. In some aspects, the at least one first value for each pixel in the subset of pixels may be associated with a full sampling process, and the second value for each pixel in the subset of pixels may be associated with a sub-sampling process. For instance, configuring the second value for each pixel in the subset of pixels may include: performing the sub-sampling process on the second value for each  pixel in the subset of pixels, where the sub-sampling process may be associated with a reduced sampling rate in a horizontal direction and a vertical direction.

[0086] At 950, GPU 902 may adjust a reduced sampling rate in a horizontal direction and a vertical direction in order to match a bit alignment for the set of pixels. For instance, performing the sub-sampling process on the second value for each pixel in the subset of pixels may include: adjusting the reduced sampling rate in the horizontal direction and the vertical direction in order to match a bit aligmment for the set of pixels. In some aspects, the reduced sampling rate may be at least one of: a 0.5 rate in the horizontal direction and the 0.5 rate in the vertical direction, the 0.5 rate in the horizontal direction and a full rate in the vertical direction, or a 0.25 rate in the horizontal direction and the 0.25 rate in the vertical direction.

[0087] At 960, GPU 902 may output a second indication of the image including the configured second value for each pixel in the subset of pixels. In some aspects, outputting the second indication of the image including the configured second value for each pixel in the subset of pixels may include transmitting the second indication of the image including the configured second value for each pixel in the subset of pixels. Also, transmitting the second indication of the image including the configured second value for each pixel in the subset of pixels may include transmitting the second indication of the image including the configured second value for each pixel in the subset of pixels to at least one of: a frame compositor, a graphics processing unit (GPU) component, a display processing unit (DPU) , or a display (e.g., GPU 902 may transmit indication 962 to DPU 904) . Additionally, in some aspects, outputting the second indication of the image including the configured second value for each pixel in the subset of pixels may include storing the second indication of the image including the configured second value for each pixel in the subset of pixels. Further, storing the second indication of the image including the configured second value for each pixel in the subset of pixels may include storing the second indication of the image including the configured second value for each pixel in the subset of pixels in at least one of: a frame buffer, a graphics buffer, a graphics memory, or a system memory (e.g., GPU 902 may store indication 964 in memory 906) .

[0088] FIG. 10 is a flowchart 1000 of an example method of image processing in accordance with one or more techniques of this disclosure. The method may be performed by a GPU (or other graphics processor) , a DPU (or other display processor) , a CPU (or other central processor) , a DPU driver, a DDIC, an apparatus for image processing, a  wireless commtmication device, and / or any apparatus that may perform data processing as used in connection with the examples of FIGs. 1-9.

[0089] At 1002, the GPU may obtain a first indication of an image including a set of pixels, where the set of pixels is associated with a color format including a set of color channels, where the set of color channels includes at least one first channel and a second channel, where each of the set of pixels includes at least one first value for the at least one first channel and a second value for the second channel, where each pixel in a subset of pixels of the set of pixels includes the at least one first value that is different from other pixels in the subset of pixels, and where each pixel in the subset of pixels includes the second value that is equal to the other pixels in the subset of pixels, as descried in connection with the examples in FIGs. 1-9. For example, as descried in 910 of FIG. 9, GPU 902 may obtain a first indication of an image including a set of pixels, where the set of pixels is associated with a color format including a set of color channels, where the set of color channels includes at least one first channel and a second channel, where each of the set of pixels includes at least one first value for the at least one first channel and a second value for the second channel, where each pixel in a subset of pixels of the set of pixels includes the at least one first value that is different from other pixels in the subset of pixels, and where each pixel in the subset of pixels includes the second value that is equal to the other pixels in the subset of pixels. Further, step 1002 may be performed by processing unit 120 in FIG. 1. For example, GPU 902 may obtain indication 912 from DPU 904.

[0090] In some aspects, the color format may be a red (R) green (G) blue (B) alpha (A) (RGBA) color format, where the at least one first channel may include an R channel, a G channel, and a B channel, where the second channel may include an alpha (A) channel, where the at least one first value may include an R value, a G value, and a B value, and where the second value may include an alpha (A) value. Also, the RGBA color format may be an RGBA1010102 format. Additionally, in some aspects, a total number of bits for the second value for the subset of pixels may be equally divide d between each pixel in the subset of pixels. For instance, the subset of pixels may include 4 pixels, where the total number of bits for the second value for the subset of pixels may be equal to 8 bits, and where each pixel in the subset of pixels may include 2 bits. Further, in some aspects, a number of bits for the at least one first value of each pixel in the subset of pixels may be equal to a number of bits for the at least one first value of the other pixels in the subset of pixels. For instance, the number of bits  for the at least one first value of each pixel in the subset of pixels may be equal to 10 bits.

[0091] At 1004, the GPU may configure the second value for each pixel in the subset of pixels based on the set of pixels, as described in connection with the examples in FIGs. 1-9. For example, as described in 920 of FIG. 9, GPU 902 may configure the second value for each pixel in the subset of pixels based on the set of pixels. Further, step 1004 may be performed by processing unit 120 in FIG. 1.

[0092] At 1012, the GPU may output a second indication of the image including the configured second value for each pixel in the subset of pixels, as described in connection with the examples in FIGs. 1-9. For example, as described in 960 of FIG. 9, GPU 902 may output a second indication of the image including the configured second value for each pixel in the subset of pixels. Further, step 1012 may be performed by processing unit 120 in FIG. 1. In some aspects, outputting the second indication of the image including the configured second value for each pixel in the subset of pixels may include transmitting the second indication of the image including the configured second value for each pixel in the subset of pixels. Also, transmitting the second indication of the image including the configured second value for each pixel in the subset of pixels may include transmitting the second indication of the image including the configured second value for each pixel in the subset of pixels to at least one of: a frame compositor, a graphics processing unit (GPU) component, a display processing unit (DPU) , or a display (e.g., GPU 902 may transmit indication 962 to DPU 904) . Additionally, in some aspects, outputting the second indication of the image including the configured second value for each pixel in the subset of pixels may include storing the second indication of the image including the configured second value for each pixel in the subset of pixels. Further, storing the second indication of the image including the configured second value for each pixel in the subset of pixels may include storing the second indication of the image including the configured second value for each pixel in the subset of pixels in at least one of: a frame buffer, a graphics buffer, a graphics memory, or a system memory (e.g., GPU 902 may store indication 964 in memory 906) .

[0093] FIG. 11 is a flowchart 1100 of an example method of image processing in accordance with one or more techniques of this disclosure. The method may be performed by a GPU (or other graphics processor) , a DPU (or other display processor) , a CPU (or other central processor) , a DPU driver, a DDIC, an apparatus for image processing, a  wireless commtmication device, and / or any apparatus that may perform data processing as used in connection with the examples of FIGs. 1-9.

[0094] At 1102, the GPU may obtain a first indication of an image including a set of pixels, where the set of pixels is associated with a color format including a set of color channels, where the set of color channels includes at least one first channel and a second channel, where each of the set of pixels includes at least one first value for the at least one first channel and a second value for the second channel, where each pixel in a subset of pixels of the set of pixels includes the at least one first value that is different from other pixels in the subset of pixels, and where each pixel in the subset of pixels includes the second value that is equal to the other pixels in the subset of pixels, as descried in connection with the examples in FIGs. 1-9. For example, as descried in 910 of FIG. 9, GPU 902 may obtain a first indication of an image including a set of pixels, where the set of pixels is associated with a color format including a set of color channels, where the set of color channels includes at least one first channel and a second channel, where each of the set of pixels includes at least one first value for the at least one first channel and a second value for the second channel, where each pixel in a subset of pixels of the set of pixels includes the at least one first value that is different from other pixels in the subset of pixels, and where each pixel in the subset of pixels includes the second value that is equal to the other pixels in the subset of pixels. Further, step 1102 may be performed by processing unit 120 in FIG. 1. For example, GPU 902 may obtain indication 912 from DPU 904.

[0095] In some aspects, the color format may be a red (R) green (G) blue (B) alpha (A) (RGBA) color format, where the at least one first channel may include an R channel, a G channel, and a B channel, where the second channel may include an alpha (A) channel, where the at least one first value may include an R value, a G value, and a B value, and where the second value may include an alpha (A) value. Also, the RGBA color format may be an RGBA1010102 format. Additionally, in some aspects, a total number of bits for the second value for the subset of pixels may be equally divided between each pixel in the subset of pixels. For instance, the subset of pixels may include 4 pixels, where the total number of bits for the second value for the subset of pixels may be equal to 8 bits, and where each pixel in the subset of pixels may include 2 bits. Further, in some aspects, a number of bits for the at least one first value of each pixel in the subset of pixels may be equal to a number of bits for the at least one first value of the other pixels in the subset of pixels. For instance, the number of bits  for the at least one first value of each pixel in the subset of pixels may be equal to 10 bits.

[0096] At 1104, the GPU may configure the second value for each pixel in the subset of pixels based onthe set of pixels, as described in connection with the examples in FIGs. 1-9. For example, as described in 920 of FIG. 9, GPU 902 may configure the second value for each pixel in the subset of pixels based on the set of pixels. Further, step 1104 may be performed by processing unit 120 in FIG. 1.

[0097] At 1106, the GPU may downsample the second value for the second channel for each pixel in the subset of pixels, as described in connection with the examples in FIGs. 1-9. For example, as described in 930 of FIG. 9, GPU 902 may downsample the second value for the second channel for each pixel in the subset of pixels. Further, step 1106 may be performed by processing unit 120 in FIG. 1. For instance, configuring the second value for each pixel in the subset of pixels may include (e.g., comprise) : downsampling the second value for the second channel for each pixel in the subset of pixels. Also, downsampling the second value for each pixel in the subset of pixels may include: calculating an average value of the second value for each pixel in the subset of pixels; and downsampling the average value of the second value for each pixel in the subset of pixels.

[0098] At 1108, the GPU may perform a sub-sampling process on the second value (i.e., subsample the second value) for each pixel in the subset of pixels, where the sub-sampling process is associated with a reduced sampling rate in a horizontal direction and a vertical direction, as described in connection with the examples in FIGs. 1-9. For example, as described in 940 of FIG. 9, GPU 902 may perform a sub-sampling process on the second value (i.e., subsample the second value) for each pixel in the subset of pixels, where the sub-sampling process is associated with a reduced sampling rate in a horizontal direction and a vertical direction. Further, step 1108 may be performed by processing unit 120 in FIG. 1. In some aspects, the at least one first value for each pixel in the subset of pixels may be associated with a full sampling process, and the second value for each pixel in the subset of pixels may be associated with a sub-sampling process. For instance, configuring the second value for each pixel in the subset of pixels may include: performing the sub-sampling process on the second value for each pixel in the subset of pixels, where the sub-sampling process may be associated with a reduced sampling rate in a horizontal direction and a vertical direction.

[0099] At 1110, the GPU may adjust a reduced sampling rate in a horizontal direction and a vertical direction in order to match a bit alignment for the set of pixels, as described in connection with the examples in FIGs. 1-9. For example, as described in 950 of FIG. 9, GPU 902 may adjust a reduced sampling rate in a horizontal direction and a vertical direction in order to match a bit alignment for the set of pixels. Further, step 1110 may be performed by processing unit 120 in FIG. 1. For instance, performing the sub-sampling process on the second value for each pixel in the subset of pixels may include: adjusting the reduced sampling rate in the horizontal direction and the vertical direction in order to match a bit alignment for the set of pixels. In some aspects, the reduced sampling rate may be at least one of: a 0.5 rate in the horizontal direction and the 0.5 rate in the vertical direction, the 0.5 rate in the horizontal direction and a full rate in the vertical direction, or a 0.25 rate in the horizontal direction and the 0.25 rate in the vertical direction.

[0100] At 1112, the GPU may output a second indication of the image including the configured second value for each pixel in the subset of pixels, as described in connection with the examples in FIGs. 1-9. For example, as described in 960 of FIG. 9, GPU 902 may output a second indication of the image including the configured second value for each pixel in the subset of pixels. Further, step 1112 may be performed by processing unit 120 in FIG. 1. In some aspects, outputting the second indication of the image including the configured second value for each pixel in the subset of pixels may include transmitting the second indication of the image including the configured second value for each pixel in the subset of pixels. Also, transmitting the second indication of the image including the configured second value for each pixel in the subset of pixels may include transmitting the second indication of the image including the configured second value for each pixel in the subset of pixels to at least one of: a frame compositor, a graphics processing unit (GPU) component, a display processing unit (DPU) , or a display (e.g., GPU 902 may transmit indication 962 to DPU 904) . Additionally, in some aspects, outputting the second indication of the image including the configured second value for each pixel in the subset of pixels may include storing the second indication of the image including the configured second value for each pixel in the subset of pixels. Further, storing the second indication of the image including the configured second value for each pixel in the subset of pixels may include storing the second indication of the image including the configured second value for each pixel in the subset of pixels in at least one of: a  frame buffer, a graphics buffer, a graphics memory, or a system memory (e.g., GPU 902 may store indication 964 in memory 906) .

[0101] In configurations, a method or an apparatus for display processing is provided. The apparatus may be a GPU (or other graphics processor) , a DPU (or other display processor) , a CPU (or other central processor) , a DPU driver, a DDIC, an apparatus for display processing, and / or some other processor that may perform display processing. In aspects, the apparatus may be the processing unit 120 within the device 104, or may be some other hardware within the device 104 or another device. The apparatus, e.g., processing unit 120, may include means for obtaining a first indication of an image including a set of pixels, where the set of pixels is associated with a color format including a set of color channels, where the set of color channels includes at least one first channel and a second channel, where each of the set of pixels include s at least one first value for the at least one first channel and a second value for the second channel, where each pixel in a subset of pixels of the set of pixels includes the at least one first value that is different from other pixels in the subset of pixels, and where each pixel in the subset of pixels includes the second value that is equal to the other pixels in the subset of pixels. The apparatus, e.g., processing unit 120, may also include means for configuring the second value for each pixel in the subset of pixels based on the set of pixels. The apparatus, e.g., processing unit 120, may also include means for downsampling the second value for the second channel for each pixel in the subset of pixels. The apparatus, e.g., processing unit 120, may also include means for performing a sub-sampling process on the second value for each pixel in the subset of pixels, where the sub-sampling process is associated with a reduced sampling rate in a horizontal direction and a vertical direction. The apparatus, e.g., processing unit 120, may also include means for adjusting the reduced sampling rate in the horizontal direction and the vertical direction in order to match a bit alignment for the set of pixels. The apparatus, e.g., processing unit 120, may also include means for outputting a second indication of the image including the configured second value for each pixel in the subset of pixels.

[0102] The subject matter described herein may be implemented to realize one or more benefits or advantages. For instance, the described data processing techniques may be used by a GPU, a graphics processor, a DPU, a display processor, a CPU, a central processor, a DPU driver, or some other processor that may perform image processing to implement the alpha blending techniques described herein. This may also be  accomplished at a low cost compared to other image processing techniques. Moreover, the image processing techniques herein may improve or speed up data processing or execution. Further, the image processing techniques herein may improve resource or data utilization and / or resource efficiency. Additionally, aspects of the present disclosure may utilize alpha blending techniques in order to improve memory bandwidth efficiency and / or increase processing speed at a GPU, a DPU and / or a CPU.

[0103] It is understood that the specific order or hierarchy of blocks in the processes  / flowcharts disclosed is an illustration of example approaches. Based upon design preferences, it is understood that the specific order or hierarchy of blocks in the processes  / flowcharts may be rearranged. Further, some blocks may be combined or omitted. The accompanying method claims present elements of the various blocks in a sample order, and are not meant to be limited to the specific order or hierarchy presented.

[0104] The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but is to be accordedthe full scope consistent with the language of the claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more. ” The word “exemplary” is used herein to mean “serving as an example, instance, or illustration. ” Any aspect descried herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects.

[0105] Unless specifically stated otherwise, the term “some” refers to one or more and the term “or” may be interpreted as “and / or” where context does not dictate otherwise. Combinations such as “at least one of A, B, or C, ” “one or more of A, B, or C, ” “at least one of A, B, and C, ” “one or more of A, B, and C, ” and “A, B, C, or any combination thereof” include any combination of A, B, and / or C, and may include multiples of A, multiples of B, or multiples of C. Specifically, combinations such as “at least one of A, B, or C, ” “one or more of A, B, or C, ” “at least one of A, B, and C, ” “one or more of A, B, and C, ” and “A, B, C, or any combination thereof” may be A only, B only, C only, A and B, A and C, B and C, or A and B and C, where any such combinations may contain one or more member or members of A, B, or C. All  structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. The words “module, ” “mechanism, ” “element, ” “device, ” and the like may not be a substitute for the word “means. ” As such, no claim element is to be construed as a means plus function unless the element is expressly recited using the phrase “means for. ”

[0106] In one or more examples, the functions described herein may be implemented in hardware, software, firmware, or any combination thereof. For example, although the term “processing unit” has been used throughout this disclosure, such processing units may be implemented in hardware, software, firmware, or any combination thereof. If any function, processing unit, technique described herein, or other module is implemented in software, the function, processing unit, technique described herein, or other module may be stored on or transmitted over as one or more instructions or code on a computer-readable medium.

[0107] In accordancewith this disclosure, the term “or” may be interpreted as “and / or” where context does not dictate otherwise. Additionally, while phrases such as “one or more” or “at least one” or the like may have been used for some features disclosed herein but not others, the features for which such language was not used may be interpreted to have such a meaning implied where context does not dictate otherwise.

[0108] In one or more examples, the functions described herein may be implemented in hardware, software, firmware, or any combination thereof. For example, although the term “processing unit” has been used throughout this disclosure, such processing units may be implemented in hardware, software, firmware, or any combination thereof. If any function, processing unit, technique described herein, or other module is implemented in software, the function, processing unit, technique described herein, or other module may be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Computer-readable media may include computer data storage media or communication media including any medium that facilitates transfer of a computer program from one place to another. In this manner, computer-readable media generally may correspond to (1) tangible computer-readable storage media, which is non-transitory or (2) a communication medium such  as a signal or carrier wave. Data storage media may be any available media that may be accessed by one or more computers or one or more processors to retrieve instructions, code and / or data structures for implementation of the techniques described in this disclosure. By way of example, and not limitation, such computer-readable media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices. Disk and disc, as used herein, includes compact disc (CD) , laser disc, optical disc, digital versatile disc (DVD) , floppy disk and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media. A computer program product may include a computer-readable medium.

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

[0110] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs, e.g., a chip set. Various components, modules or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily need realization by different hardware units. Rather, as described above, various units may be combined in any hardware unit or provided by a collection of inter-operative hardware units, including one or more processors as described above, in conjunction with suitable software and / or firmware. Accordingly, the term “processor, ” as used herein may refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein. Also, the techniques may be fully implemented in one or more circuits or logic elements.

[0111] The following aspects are illustrative only and may be combined with other aspects or teachings described herein, without limitation.

[0112] Aspect 1 is an apparatus for image processing, including at least one memory; and at least one processor coupled to the at least one memory and, based at least in part on information stored in the at least one memory, the at least one processor, individually or in any combination, is configured to: obtain a first indication of an image including a set of pixels, wherein the set of pixels is associated with a color format including a set of color channels, wherein the set of color channels includes at least one first channel and a second channel, wherein each of the set of pixels includes at least one first value for the at least one first channel and a second value for the second channel, wherein each pixel in a subset of pixels of the set of pixels includes the at least one first value that is different from other pixels in the subset of pixels, and wherein each pixel in the subset of pixels includes the second value that is equal to the other pixels in the subset of pixels; configure the second value for each pixel in the subset of pixels based on the set of pixels; and output a second indication of the image including the configured second value for each pixel in the subset of pixels.

[0113] Aspect 2 is the apparatus of aspect 1, wherein to configure the second value for each pixel in the subset of pixels, the at least one processor, individually or in any combination, is configured to: downsample the second value for the second channel for each pixel in the subset of pixels.

[0114] Aspect 3 is the apparatus of aspect 2, wherein to downsample the second value for each pixel in the subset of pixels, the at least one processor, individually or in any combination, is configured to: calculate an average value of the second value for each pixel in the subset of pixels; and downsample the average value of the second value for each pixel in the subset of pixels.

[0115] Aspect 4 is the apparatus of any of aspects 1 to 3, wherein the at least one first value for each pixel in the subset of pixels is associated with a full sampling process, and wherein the second value for each pixel in the subset of pixels is associated with a sub-sampling process.

[0116] Aspect 5 is the apparatus of aspect4, wherein to configure the second value for each pixel in the subset of pixels, the at least one processor, individually or in any combination, is configured to: perform the sub-sampling process on the second value for each pixel in the subset of pixels, wherein the sub-sampling process is associated with a reduced sampling rate in a horizontal direction and a vertical direction.

[0117] Aspect 6 is the apparatus of aspect 5, wherein to perform the sub-sampling process on the second value for each pixel in the subset of pixels, the at least one processor,  individually or in any combination, is configured to: adjust the reduced sampling rate in the horizontal direction and the vertical direction in order to match a bit alignment for the set of pixels.

[0118] Aspect 7 is the apparatus of any of aspects 5 to 6, wherein the reduced sampling rate is at least one of: a 0.5 rate in the horizontal direction and the 0.5 rate in the vertical direction, the 0.5 rate in the horizontal direction and a full rate in the vertical direction, or a 0.25 rate in the horizontal direction and the 0.25 rate in the vertical direction.

[0119] Aspect 8 is the apparatus of any of aspects 1 to 7, wherein the color format is a red (R) green (G) blue (B) alpha (A) (RGBA) color format, wherein the at least one first channel comprises an R channel, a G channel, and a B channel, wherein the second channel comprises an alpha (A) channel, wherein the atleast one first value comprises an R value, a G value, and a B value, and wherein the second value comprises an alpha (A) value.

[0120] Aspect 9 is the apparatus of aspect 8, wherein the RGBA color format is an RGBA1010102 format.

[0121] Aspect 10 is the apparatus of any of aspects 1 to 9, wherein a total number of bits for the second value for the subset of pixels is equally divided between each pixel in the subset of pixels.

[0122] Aspect 11 is the apparatus of aspect 10, wherein the subset of pixels includes 4 pixels, wherein the total number of bits for the second value for the subset of pixels is equal to 8 bits, and wherein each pixel in the subset of pixels includes 2 bits.

[0123] Aspect 12 is the apparatus of any of aspects 1 to 11, wherein a number of bits for the at least one first value of each pixel in the subset of pixels is equal to a number of bits for the at least one first value of the other pixels in the subset of pixels.

[0124] Aspect 13 is the apparatus of aspect 12, wherein the number of bits for the at least one first value of each pixel in the subset of pixels is equal to 10 bits.

[0125] Aspect 14 is the apparatus of any of aspects 1 to 13, wherein to output the second indication of the image including the configured second value for each pixel in the subset of pixels, the at least one processor, individually or in any combination, is configured to: transmit the second indication of the image including the configured second value for each pixel in the subset of pixels.

[0126] Aspect 15 is the apparatus of aspect 14, further comprising at least one of an antenna or a transceiver coupled to the at least one processor, wherein to transmit the second indication of the image including the configured second value for each pixel in the  subset of pixels, the at least one processor, individually or in any combination, is configured to: transmit, via at least one of the antenna or the transceiver, the second indication of the image including the configured second value for each pixel in the subset of pixels to at least one of: a frame compositor, a graphics processing unit (GPU) component, a display processing unit (DPU) , or a display.

[0127] Aspect 16 is the apparatus of any of aspects 1 to 15, wherein to output the second indication of the image including the configured second value for each pixel in the subset of pixels, the at least one processor, individually or in any combination, is configured to: store the second indication of the image including the configured second value for each pixel in the subset of pixels.

[0128] Aspect 17 is the apparatus of aspect 16, wherein to store the second indication of the image including the configured second value for each pixel in the subset of pixels, the at least one processor, individually or in any combination, is configured to: store the second indication of the image including the configured second value for each pixel in the subset of pixels in at least one of: a frame buffer, a graphics buffer, a graphics memory, or a system memory.

[0129] Aspect 18 is a method of image processing for implementing any of aspects 1 to 17.

[0130] Aspect 19 is an apparatus for image processing including means for implementing any of aspects 1 to 17.

[0131] Aspect 20 is a computer-readable medium (e.g., a non-transitory computer-readable medium) storing computer executable code, the code when executed by at least one processor causes the at least one processor to implement any of aspects 1 to 17.

Claims

1.An apparatus for image processing, comprising:at least one memory; andat least one processor coupled to the at least one memory and, based at least in part on information stored in the at least one memory, the at least one processor, individually or in any combination, is configured to:obtain a first indication of an image including a set of pixels, wherein the set of pixels is associated with a color format including a set of color channels, wherein the set of color channels includes at least one first channel and a second channel, wherein each of the set of pixels includes at least one first value for the at least one first channel and a second value for the second channel, wherein each pixel in a subset of pixels of the set of pixels includes the at least one first value that is different from other pixels in the subset of pixels, and wherein each pixel in the subset of pixels includes the second value that is equal to the other pixels in the subset of pixels;configure the second value for each pixel in the subset of pixels based on the set of pixels; andoutput a second indication of the image including the configured second value for each pixel in the subset of pixels.2.The apparatus of claim 1, wherein to configure the second value for each pixel in the subset of pixels, the at least one processor, individually or in any combination, is configured to:downsample the second value for the second channel for each pixel in the subset of pixels.3.The apparatus of claim 2, wherein to downsample the second value for each pixel in the subset of pixels, the at least one processor, individually or in any combination, is configured to:calculate an average value of the second value for each pixel in the subset of pixels; anddownsample the average value of the second value for each pixel in the subset of pixels.4.The apparatus of claim 1, wherein the at least one first value for each pixel in the subset of pixels is associated with a full sampling process, and wherein the second value for each pixel in the subset of pixels is associated with a sub-sampling process.5.The apparatus of claim 4, wherein to configure the second value for each pixel in the subset of pixels, the at least one processor, individually or in any combination, is configured to:perform the sub-sampling process on the second value for each pixel in the subset of pixels, wherein the sub-sampling process is associated with a reduced sampling rate in a horizontal direction and a vertical direction.6.The apparatus of claim 5, wherein to perform the sub-sampling process on the second value for each pixel in the subset of pixels, the at least one processor, individually or in any combination, is configured to:adjust the reduced sampling rate in the horizontal direction and the vertical direction in order to match a bit alignment for the set of pixels.7.The apparatus of claim 5, wherein the reduced sampling rate is at least one of: a 0.5 rate in the horizontal direction and the 0.5 rate in the vertical direction, the 0.5 rate in the horizontal direction and a full rate in the vertical direction, or a 0.25 rate in the horizontal direction and the 0.25 rate in the vertical direction.8.The apparatus of claim 1, wherein the color format is a red (R) green (G) blue (B) alpha (A) (RGBA) color format, wherein the at least one first channel comprises an R channel, a G channel, and a B channel, wherein the second channel comprises an alpha (A) channel, wherein the at least one first value comprises an R value, a G value, and a B value, and wherein the second value comprises an alpha (A) value.9.The apparatus of claim 8, wherein the RGBA color format is an RGBA1010102 format.10.The apparatus of claim 1, wherein a total number of bits for the second value for the subset of pixels is equally divided between each pixel in the subset of pixels.11.The apparatus of claim 10, wherein the subset of pixels includes 4 pixels, wherein the total number of bits for the second value for the subset of pixels is equal to 8 bits, and wherein each pixel in the subset of pixels includes 2 bits.12.The apparatus of claim 1, wherein a number of bits for the at least one first value of each pixel in the subset of pixels is equal to a number of bits for the at least one first value of the other pixels in the subset of pixels.13.The apparatus of claim 12, wherein the number of bits for the at least one first value of each pixel in the subset of pixels is equal to 10 bits.14.The apparatus of claim 1, wherein to output the second indication of the image including the configured second value for each pixel in the subset of pixels, the at least one processor, individually or in any combination, is configured to:transmit the second indication of the image including the configured second value for each pixel in the subset of pixels.15.The apparatus of claim 14, further comprising at least one of an antenna or a transceiver coupled to the at least one processor, wherein to transmit the second indication of the image including the configured second value for each pixel in the subset of pixels, the at least one processor, individually or in any combination, is configured to:transmit, via at least one of the antenna or the transceiver, the second indication of the image including the configured second value for each pixel in the subset of pixels to at least one of: a frame compositor, a graphics processing unit (GPU) component, a display processing unit (DPU) , or a display.16.The apparatus of claim 1, wherein to output the second indication of the image including the configured second value for each pixel in the subset of pixels, the at least one processor, individually or in any combination, is configured to:store the second indication of the image including the configured second value for each pixel in the subset of pixels.17.The apparatus of claim 16, wherein to store the second indication of the image including the configured second value for each pixel in the subset of pixels, the at least one processor, individually or in any combination, is configured to:store the second indication of the image including the configured second value for each pixel in the subset of pixels in at least one of: a frame buffer, a graphics buffer, a graphics memory, or a system memory.18.A method of image processing, comprising:obtaining a first indication of an image including a set of pixels, wherein the set of pixels is associated with a color format including a set of color channels, wherein the set of color channels includes at least one first channel and a second channel, wherein each of the set of pixels includes at least one first value for the at least one first channel and a second value for the second channel, wherein each pixel in a subset of pixels of the set of pixels includes the at least one first value that is different from other pixels in the subset of pixels, and wherein each pixel in the subset of pixels includes the second value that is equal to the other pixels in the subset of pixels;configuring the second value for each pixel in the subset of pixels based on the set of pixels; andoutputting a second indication of the image including the configured second value for each pixel in the subset of pixels.19.The method of claim 18, wherein configuring the second value for each pixel in the subset of pixels comprises:downsampling the second value for the second channel for each pixel in the subset of pixels.20.The method of claim 19, wherein downsampling the second value for each pixel in the subset of pixels comprises:calculating an average value of the second value for each pixel in the subset of pixels; anddownsampling the average value of the second value for each pixel in the subset of pixels.21.The method of claim 18, wherein the at least one first value for each pixel in the subset of pixels is associated with a full sampling process, and wherein the second value for each pixel in the subset of pixels is associated with a sub-sampling process.22.The method of claim 21, wherein configuring the second value for each pixel in the subset of pixels comprises:performing the sub-sampling process on the second value for each pixel in the subset of pixels, wherein the sub-sampling process is associated with a reduced sampling rate in a horizontal direction and a vertical direction.23.The method of claim 22, wherein performing the sub-sampling process on the second value for each pixel in the subset of pixels comprises:adjusting the reduced sampling rate in the horizontal direction and the vertical direction in order to match a bit alignment for the set of pixels.24.The method of claim 22, wherein the reduced sampling rate is at least one of: a 0.5 rate in the horizontal direction and the 0.5 rate in the vertical direction, the 0.5 rate in the horizontal direction and a full rate in the vertical direction, or a 0.25 rate in the horizontal direction and the 0.25 rate in the vertical direction.25.The method of claim 18, wherein the color format is a red (R) green (G) blue (B) alpha (A) (RGBA) color format, wherein the at least one first channel comprises an R channel, a G channel, and a B channel, wherein the second channel comprises an alpha (A) channel, wherein the at least one first value comprises an R value, a G value, and a B value, wherein the second value comprises an alpha (A) value, and wherein the RGBA color format is an RGBA1010102 format.26.The method of claim 18, wherein a total number of bits for the second value for the subset of pixels is equally divided between each pixel in the subset of pixels, wherein the subset of pixels includes 4 pixels, wherein the total number of bits for the second value for the subset of pixels is equal to 8 bits, and wherein each pixel in the subset of pixels includes 2 bits; andwherein a number of bits for the at least one first value of each pixel in the subset of pixels is equal to the number of bits for the at least one first value of the other pixels in the subset of pixels, and wherein the number of bits for the at least one first value of each pixel in the subset of pixels is equal to 10 bits.27.The method of claim 18, wherein outputting the second indication of the image including the configured second value for each pixel in the subset of pixels comprises:transmitting the second indication of the image including the configured second value for each pixel in the subset of pixels to at least one of: a frame compositor, a graphics processing unit (GPU) component, a display processing unit (DPU) , or a display.28.The method of claim 18, wherein outputting the second indication of the image including the configured second value for each pixel in the subset of pixels comprises:storing the second indication of the image including the configured second value for each pixel in the subset of pixels in at least one of: a frame buffer, a graphics buffer, a graphics memory, or a system memory.29.An apparatus for image processing, comprising:means for obtaining a first indication of an image including a set of pixels, wherein the set of pixels is associated with a color format including a set of color channels, wherein the set of color channels includes at least one first channel and a second channel, wherein each of the set of pixels includes at least one first value for the at least one first channel and a second value for the second channel, wherein each pixel in a subset of pixels of the set of pixels includes the at least one first value that is different from other pixels in the subset of pixels, and wherein each pixel in the subset of pixels includes the second value that is equal to the other pixels in the subset of pixels;means for configuring the second value for each pixel in the subset of pixels based on the set of pixels; andmeans for outputting a second indication of the image including the configured second value for each pixel in the subset of pixels.30.A computer-readable medium storing computer executable code for image processing, the code when executed by at least one processor causes the at least one processor to:obtain a first indication of an image including a set of pixels, wherein the set of pixels is associated with a color format including a set of color channels, wherein the set of color channels includes at least one first channel and a second channel, wherein each of the set of pixels includes at least one first value for the at least one first channel and a second value for the second channel, wherein each pixel in a subset of pixels of the set of pixels includes the at least one first value that is different from other pixels in the subset of pixels, and wherein each pixel in the subset of pixels includes the second value that is equal to the other pixels in the subset of pixels;configure the second value for each pixel in the subset of pixels based on the set of pixels; andoutput a second indication of the image including the configured second value for each pixel in the subset of pixels.