The present invention generally relates to graphics processing circuits, such as graphics processors and, more particularly to an apparatus for providing gamma corrected fixed point pixel values.
Modern graphics processors process input primitive (e.g. triangle) information in floating point format and generate corresponding output pixel information, where the accumulated pixel information represents a scene. The pixel information provided by the graphics processor is typically stored in a frame buffer, or other suitable memory, for subsequent transmission and presentation on a suitable display device. The pixel information is typically stored in the frame buffer in fixed point format. The display presents the pixel information in fixed point analog format, referred to as gamma space. In operation, the stored pixel (e.g. digital) information is passed through a digital-to-analog converter (DAC), before the pixel information is presented on the display.
Modern displays exhibit non-linear appearance characteristics which may be represented as follows:
b=Vgamma
where b represents, for example, a corresponding appearance (e.g. brightness) value of the display output, V represents the pixel value provided by the DAC and gamma represents a weighing factor associated with the pixel value. Thus, the appearance (e.g., brightness), for example, of a pixel to be presented on the display does not exhibit a one-to-one linear relationship with the signal (e.g. voltage) provided by the DAC. This results in inferior image quality, for example, as the actual pixel appearance (e.g. brightness) is typically less than expected based on the gamma value. For example, an input brightness value of 0.5 does not result in a displayed pixel brightness of ½max; rather, the resulting displayed brightness of the corresponding pixel is typically about ¼max.
One solution is to use an inverse gamma table located between the frame buffer and the digital-to-analog converter of a display controller. The inverse gamma table may be, for example, a look-up table that includes conversion values that effectively correct for the non-linear characteristics of the display device. However, a disadvantage of such a system may be that the frame buffer typically is only 8-bits per component per pixel and so for values near black there may be very discrete steps that are plainly visible on the monitor since the monitor is typically more sensitive to low light levels that to high light levels. In such systems gamma correction is performed after the pixel information is stored in the frame buffer.
The present invention and the corresponding advantages and features provided thereby will be best appreciated and understood upon review of the following detailed description of the invention, taken in conjunction with the following drawings, where like elements represent like elements, in which:
Briefly stated, graphics processing circuitry includes processing circuitry operative to generate pixel information in response to primitive information, and a correction circuit, coupled to the processing circuitry, operative to generate gamma corrected pixel information in response to the pixel information. The correction circuit converts the floating point pixel information generated by the processing circuitry into a gamma corrected fixed-point value so that gamma space pixel data is stored in the frame buffer. This fixed point gamma corrected pixel information, converted from the floating point pixel information, compensates for the non-linear display characteristics exhibited by current display devices. This results in the display output being more accurate; thereby, improving the appearance quality of the resulting image.
The frame buffer 40 receives the fixed point gamma corrected pixel information 38 from the gamma correction circuit 37 and stores the fixed point gamma corrected pixel information 38 for output to display 44. A display controller 42 operatively coupled to the frame buffer 40 and to the display 44, retrieves the stored fixed point gamma corrected pixel information 41 (i.e., stored 38) and displays the information as display information 43 for display 44. As such, the display controller 42 does not perform gamma correction. The display 44 can be a CRT, flat panel display, high definition television display, or any suitable display.
The gamma correction circuit 37 provides for a substantially linear relationship between input pixel values and display appearance (e.g. intensity) by compensating for the non-linear characteristics of the display 44 before the fixed point gamma corrected pixel information 38 is stored in the frame buffer 40. In application, the gamma correction circuit 37 determines the value, based on an inverse gamma curve, and combines the correction value to base integer data.
The look-up table 142 provides two outputs, base integer data 147, such an 11-bit output, which represents discrete integer values along the inverse gamma curve, and first input data 143, such as a 7-bit value, representing the difference between discrete integer values (e.g. points along the inverse gamma curve).
A multiplication circuit 144 is operably coupled to the look-up table 142 to receive first input data 143 and second input data 160, representing a mantissa portion of the floating point pixel information 36. Hence the 7-bit difference value, first input data 143, is provided as a first input to the multiplication circuit 144. The second input data to the multiplication circuit are bits [11:6] of the mantissa 138. The multiplication circuit 144 provides intermediate data 145 in response to the first input data and the second input data. The intermediate data 145 is provided as an input to a divider circuit 146.
The divider circuit 146 provides normalized intermediate data 149 in response to the intermediate data 145. In this example, the divider circuit 146 performs a divide by 64 operation, which is used to normalize or convert the mantissa bits [11:6] to a value between 0 and 1. The divider circuit 146 provides the intermediate data 149 as input to an addition circuit 148. The addition circuit 148 provides intermediate data 151 in response to the normalized intermediate data 149 and in response to the base integer data 147 wherein the base integer data represents a discrete value along a gamma correction curve. An output of the addition circuit 148 provides the intermediate data 151 to another divider circuit 150 which performs a divide by 2 operation. The divider circuit 150 is coupled to receive an output of the addition circuit 48, and provides the fixed point gamma corrected pixel information 152 in response to the intermediate data 151. Hence the output of the divider circuit 150 represents gamma corrected fixed point pixel information which has been compensated for the non-linear characteristics of a corresponding display device. An output buffer 153 is operably coupled to receive the fixed point gamma corrected pixel information 152, in this example, includes a 3 to 1 multiplexer and includes a plurality of inputs. One input may be hard wired to logical 0 or ground and another input may be hard wired to a logical 1, whereas the third input receives the fixed point gamma corrected pixel information 152. The output of the output buffer 153 is determined by the sign bit 136 of the floating point of a floating point pixel information 36 and the exponent 137 of a floating point pixel information 36 according to the table below:
63
31
Thus, the output of the gamma corrections circuit 37 may be clipped to 0 or 1, depending upon the sign bit and the value of the exponent of the floating point pixel information 36. It will be recognized that the operations described herein may be implemented via any suitable structure including any suitable combination of hardware, software and firmware.
Stated another way, the gamma correction circuit operates based on the following gamma correction circuit equation.
V[int(x)]+(V[int(x)+1]−V[int(x)])*(x−int(x))
The above detailed description of the invention and the examples described therein have been provided for the purposes of illustration and description. It is therefore contemplated that the present invention cover any and all modifications, variations and/or equivalents that fall within the spirit and scope of the basic underlying principles disclosed and claimed herein.
This application claims the benefit of U.S. Provisional Application Ser. No. 60/429,661 filed Nov. 27, 2002, entitled “Apparatus for Converting Floating Point Values to Gamma Corrected Fixed Point Values”, having as inventor, Mark M. Leather, and owned by instant assignee.
| Number | Name | Date | Kind |
|---|---|---|---|
| 5528741 | Lucas | Jun 1996 | A |
| 6166781 | Kwak et al. | Dec 2000 | A |
| 6304300 | Warren et al. | Oct 2001 | B1 |
| 6545672 | Goyins | Apr 2003 | B1 |
| 6633343 | Ito et al. | Oct 2003 | B1 |
| Number | Date | Country | |
|---|---|---|---|
| 20040100475 A1 | May 2004 | US |
| Number | Date | Country | |
|---|---|---|---|
| 60429661 | Nov 2002 | US |