[PATCH v2] drm/fourcc: Add bayer formats and modifiers

Neil Armstrong narmstrong at baylibre.com
Fri Jul 3 08:41:10 UTC 2020


Hi Niklas,

On 02/07/2020 23:51, Laurent Pinchart wrote:
> Hi Sakari,
> 
> On Mon, May 25, 2020 at 01:31:43PM +0300, Sakari Ailus wrote:
>> On Fri, May 22, 2020 at 01:52:01AM +0200, Niklas Söderlund wrote:
>>> Bayer formats are used with cameras and contain green, red and blue
>>> components, with alternating lines of red and green, and blue and green
>>> pixels in different orders. For each block of 2x2 pixels there is one
>>> pixel with a red filter, two with a green filter, and one with a blue
>>> filter. The filters can be arranged in different patterns.
>>>
>>> Add DRM fourcc formats to describe the most common Bayer formats. Also
>>> add a modifiers to describe the custom packing layouts used by the Intel
>>> IPU3 and in the MIPI (Mobile Industry Processor Interface) CSI-2
>>> specification.
>>>
>>> Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
>>> ---
>>> * Changes since v1
>>> - Rename the defines from DRM_FORMAT_SRGGB8 to DRM_FORMAT_BAYER_RGGB8.
>>> - Update the fourcc codes passed to fourcc_code() to avoid a conflict.
>>> - Add diagrams for all Bayer formats memory layout.
>>> - Update documentation.
>>> ---
>>>  include/uapi/drm/drm_fourcc.h | 205 ++++++++++++++++++++++++++++++++++
>>>  1 file changed, 205 insertions(+)
>>>
>>> diff --git a/include/uapi/drm/drm_fourcc.h b/include/uapi/drm/drm_fourcc.h
>>> index 8bc0b31597d80737..d07dd24b49bde6c1 100644
>>> --- a/include/uapi/drm/drm_fourcc.h
>>> +++ b/include/uapi/drm/drm_fourcc.h
>>> @@ -285,6 +285,73 @@ extern "C" {
>>>  #define DRM_FORMAT_YUV444	fourcc_code('Y', 'U', '2', '4') /* non-subsampled Cb (1) and Cr (2) planes */
>>>  #define DRM_FORMAT_YVU444	fourcc_code('Y', 'V', '2', '4') /* non-subsampled Cr (1) and Cb (2) planes */
>>>  
>>> +/*
>>> + * Bayer formats
>>> + *
>>> + * Bayer formats contain green, red and blue components, with alternating lines
>>> + * of red and green, and blue and green pixels in different orders. For each
>>> + * block of 2x2 pixels there is one pixel with a red filter, two with a green
>>> + * filter, and one with a blue filter. The filters can be arranged in different
>>> + * patterns.
>>> + *
>>> + * For example, RGGB:
>>> + *	row0: RGRGRGRG...
>>> + *	row1: GBGBGBGB...
>>> + *	row2: RGRGRGRG...
>>> + *	row3: GBGBGBGB...
>>> + *	...
>>> + *
>>> + * Vendors have different methods to pack the pixel samples. For this reason the
>>> + * fourcc only describes pixel sample size and the filter pattern for each block
>>> + * of 2x2 pixels. A modifier is needed to describe the memory layout.
>>> + *
>>> + * In addition to vendor modifiers for memory layout DRM_FORMAT_MOD_LINEAR may
>>> + * be used to describe a layout where all samples are placed consecutively in
>>> + * memory. If the sample does not fit inside a single byte each sample is stored
>>> + * in the minimum number of bytes required. Any unused bits in each sample are
>>> + * defined as padding bits and set to zero.
>>> + *
>>> + * For example, DRM_FORMAT_BAYER_RGGB10 with DRM_FORMAT_MOD_LINEAR:
>>> + *
>>> + *  0                                              row 0 (RGRG)                                            31
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | r0 r0 r0 r0 r0 r0 r0 r0 |  0  0  0  0  0  0 r0 r0 | g0 g0 g0 g0 g0 g0 g0 g0 |  0  0  0  0  0  0 g0 g0 |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | r1 r1 r1 r1 r1 r1 r1 r1 |  0  0  0  0  0  0 r1 r1 | g1 g1 g1 g1 g1 g1 g1 g1 |  0  0  0  0  0  0 g1 g1 |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *
>>> + *  0                                              row 1 (GBGB)                                            31
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | g0 g0 g0 g0 g0 g0 g0 g0 |  0  0  0  0  0  0 g0 g0 | b0 b0 b0 b0 b0 b0 b0 b0 |  0  0  0  0  0  0 b0 b0 |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | g1 g1 g1 g1 g1 g1 g1 g1 |  0  0  0  0  0  0 g1 g1 | b1 b1 b1 b1 b1 b1 b1 b1 |  0  0  0  0  0  0 b1 b1 |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + */
>>> +
>>> +/* 8-bits Bayer formats */
>>> +#define DRM_FORMAT_BAYER_RGGB8		fourcc_code('R', 'G', 'G', 'B')
>>> +#define DRM_FORMAT_BAYER_GRBG8		fourcc_code('G', 'R', 'B', 'G')
>>> +#define DRM_FORMAT_BAYER_GBRG8		fourcc_code('G', 'B', 'R', 'G')
>>> +#define DRM_FORMAT_BAYER_BGGR8		fourcc_code('B', 'G', 'G', 'R')
>>> +
>>> +/* 10-bit Bayer formats */
>>> +#define DRM_FORMAT_BAYER_RGGB10		fourcc_code('R', 'G', '1', '0')
>>> +#define DRM_FORMAT_BAYER_GRBG10		fourcc_code('G', 'R', '1', '0')
>>> +#define DRM_FORMAT_BAYER_GBRG10		fourcc_code('G', 'B', '1', '0')
>>> +#define DRM_FORMAT_BAYER_BGGR10		fourcc_code('B', 'G', '1', '0')
>>> +
>>> +/* 12-bit Bayer formats */
>>> +#define DRM_FORMAT_BAYER_RGGB12		fourcc_code('R', 'G', '1', '2')
>>> +#define DRM_FORMAT_BAYER_GRBG12		fourcc_code('G', 'R', '1', '2')
>>> +#define DRM_FORMAT_BAYER_GBRG12		fourcc_code('G', 'B', '1', '2')
>>> +#define DRM_FORMAT_BAYER_BGGR12		fourcc_code('B', 'G', '1', '2')
>>> +
>>> +/* 14-bit Bayer formats */
>>> +#define DRM_FORMAT_BAYER_RGGB14		fourcc_code('R', 'G', '1', '4')
>>> +#define DRM_FORMAT_BAYER_GRBG14		fourcc_code('G', 'R', '1', '4')
>>> +#define DRM_FORMAT_BAYER_GBRG14		fourcc_code('G', 'B', '1', '4')
>>> +#define DRM_FORMAT_BAYER_BGGR14		fourcc_code('B', 'G', '1', '4')
>>> +
>>>  
>>>  /*
>>>   * Format Modifiers:
>>> @@ -309,6 +376,7 @@ extern "C" {
>>>  #define DRM_FORMAT_MOD_VENDOR_BROADCOM 0x07
>>>  #define DRM_FORMAT_MOD_VENDOR_ARM     0x08
>>>  #define DRM_FORMAT_MOD_VENDOR_ALLWINNER 0x09
>>> +#define DRM_FORMAT_MOD_VENDOR_MIPI 0x0a

I just applied:
 334 #define DRM_FORMAT_MOD_VENDOR_AMLOGIC 0x0a

So you'll need to rebase on drm-misc-next.

Thanks,
Neil

>>
>> This is an interesting one. I don't think these formats have originated
>> from MIPI. The colour pattern itself is from Eastman Kodak apparently
>> (named after Bryce Bayer), but the memory format is not, apart from the
>> MIPI CSI-2 packed variant.
>>
>> The formats are probably unlike the formats used on GPUs as they are
>> relatively similar across a number of vendors and devices.
>>
>> There are more raw formats than just the Bayer formats, see e.g.
>>
>> <URL:https://en.wikipedia.org/wiki/Raw_image_format>
>>
>> At the same time, it'd be good to keep the CSI-2 packed variant as a format
>> modifier. I wonder if we could have something like
>> DRM_FORMAT_MOD_VENDOR_RAW, albeit a raw format is not a vendor.
> 
> The modifier defined with DRM_FORMAT_MOD_VENDOR_MIPI is meant to specify
> in-memory packing corresponding to how the RAW data is carried over
> CSI-2. That's why MIPI was picked as a name.
> 
>> Cc Daniel and Laurent.
>>
>>>  /* add more to the end as needed */
>>>  
>>> @@ -434,6 +502,56 @@ extern "C" {
>>>   */
>>>  #define I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS fourcc_mod_code(INTEL, 7)
>>>  
>>> +
>>> +/*
>>> + * IPU3 Bayer packing layout
>>> + *
>>> + * The IPU3 raw Bayer formats use a custom packing layout where there are no
>>> + * gaps between each 10-bit sample. It packs 25 pixels into 32 bytes leaving
>>> + * the 6 most significant bits in the last byte unused zero padding bits.
>>> + *
>>> + * For example, DRM_FORMAT_BAYER_BGGR10 with IPU3_FORMAT_MOD_PACKED:
>>> + *
>>> + *  0                                   row 0 (BGBGBGBGBGBGBGBGBGBGBGBGB)                                  31
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | b0 b0 b0 b0 b0 b0 b0 b0 | g0 g0 g0 g0 g0 g0 b0 b0 | b1 b1 b1 b1 g0 g0 g0 g0 | g1 g1 b1 b1 b1 b1 b1 b1 |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | g1 g1 g1 g1 g1 g1 g1 g1 | b2 b2 b2 b2 b2 b2 b2 b2 | g2 g2 g2 g2 g2 g2 b2 b2 | b3 b3 b3 b3 g2 g2 g2 g2 |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | g3 g3 b3 b3 b3 b3 b3 b3 | g3 g3 g3 g3 g3 g3 g3 g3 | b4 b4 b4 b4 b4 b4 b4 b4 | g4 g4 g4 g4 g4 g4 b4 b4 |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | b5 b5 b5 b5 g4 g4 g4 g4 | g5 g5 b5 b5 b5 b5 b5 b5 | g5 g5 g5 g5 g5 g5 g5 g5 | b6 b6 b6 b6 b6 b6 b6 b6 |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | g6 g6 g6 g6 g6 g6 b6 b6 | b7 b7 b7 b7 g6 g6 g6 g6 | g7 g7 b7 b7 b7 b7 b7 b7 | g7 g7 g7 g7 g7 g7 g7 g7 |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | b8 b8 b8 b8 b8 b8 b8 b8 | g8 g8 g8 g8 g8 g8 b8 b8 | b9 b9 b9 b9 g8 g8 g8 g8 | g9 g9 b9 b9 b9 b9 b9 b9 |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | g9 g9 g9 g9 g9 g9 g9 g9 | bA bA bA bA bA bA bA bA | gA gA gA gA gA gA bA bA | bB bB bB bB gA gA gA gA |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | gB gB bB bB bB bB bB bB | gB gB gB gB gB gB gB gB | bC bC bC bC bC bC bC bC |  0  0  0  0  0  0 bC bC |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *
>>> + *  0                                   row 1 (GRGRGRGRGRGRGRGRGRGRGRGRG)                                  31
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | g0 g0 g0 g0 g0 g0 g0 g0 | r0 r0 r0 r0 r0 r0 g0 g0 | g1 g1 g1 g1 r0 r0 r0 r0 | r1 r1 g1 g1 g1 g1 g1 g1 |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | r1 r1 r1 r1 r1 r1 r1 r1 | g2 g2 g2 g2 g2 g2 g2 g2 | r2 r2 r2 r2 r2 r2 g2 g2 | g3 g3 g3 g3 r2 r2 r2 r2 |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | r3 r3 g3 g3 g3 g3 g3 g3 | r3 r3 r3 r3 r3 r3 r3 r3 | g4 g4 g4 g4 g4 g4 g4 g4 | r4 r4 r4 r4 r4 r4 g4 g4 |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | g5 g5 g5 g5 r4 r4 r4 r4 | r5 r5 g5 g5 g5 g5 g5 g5 | r5 r5 r5 r5 r5 r5 r5 r5 | g6 g6 g6 g6 g6 g6 g6 g6 |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | r6 r6 r6 r6 r6 r6 g6 g6 | g7 g7 g7 g7 r6 r6 r6 r6 | r7 r7 g7 g7 g7 g7 g7 g7 | r7 r7 r7 r7 r7 r7 r7 r7 |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | g8 g8 g8 g8 g8 g8 g8 g8 | r8 r8 r8 r8 r8 r8 g8 g8 | g9 g9 g9 g9 r8 r8 r8 r8 | r9 r9 g9 g9 g9 g9 g9 g9 |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | r9 r9 r9 r9 r9 r9 r9 r9 | gA gA gA gA gA gA gA gA | rA rA rA rA rA rA gA gA | gB gB gB gB rA rA rA rA |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *  | rB rB gB gB gB gB gB gB | rB rB rB rB rB rB rB rB | gC gC gC gC gC gC gC gC |  0  0  0  0  0  0 gC gC |
>>> + *  +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + */
>>> +#define IPU3_FORMAT_MOD_PACKED fourcc_mod_code(INTEL, 8)
>>> +
>>>  /*
>>>   * Tiled, NV12MT, grouped in 64 (pixels) x 32 (lines) -sized macroblocks
>>>   *
>>> @@ -804,6 +922,93 @@ extern "C" {
>>>   */
>>>  #define DRM_FORMAT_MOD_ALLWINNER_TILED fourcc_mod_code(ALLWINNER, 1)
>>>  
>>> +/* Mobile Industry Processor Interface (MIPI) modifiers */
>>> +
>>> +/*
>>> + * MIPI CSI-2 packing layout
>>> + *
>>> + * The CSI-2 RAW formats (for example Bayer) use a different packing layout
>>> + * depending on the sample size.
>>> + *
>>> + * - 10-bits per sample
>>> + *   Every four consecutive samples are packed into 5 bytes. Each of the first 4
>>> + *   bytes contain the 8 high order bits of the pixels, and the 5th byte
>>> + *   contains the 2 least-significant bits of each pixel, in the same order.
>>> + *
>>> + *   For example, DRM_FORMAT_BAYER_BGGR10 with MIPI_FORMAT_MOD_CSI2_PACKED:
>>> + *
>>> + *    0                                            row 0 (BGBGBGBG)                                          31
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *    | b0 b0 b0 b0 b0 b0 b0 b0 | g0 g0 g0 g0 g0 g0 g0 g0 | b1 b1 b1 b1 b1 b1 b1 b1 | g1 g1 g1 g1 g1 g1 g1 g1 |
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *    | g1 g1 b1 b1 g0 g0 b0 b0 | b2 b2 b2 b2 b2 b2 b2 b2 | g2 g2 g2 g2 g2 g2 g2 g2 | b3 b3 b3 b3 b3 b3 b3 b3 |
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *    | g3 g3 g3 g3 g3 g3 g3 g3 | g3 g3 b3 b3 g2 g2 b2 b2 |
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *
>>> + *    0                                            row 1 (GRGRGRGR)                                          31
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *    | g0 g0 g0 g0 g0 g0 g0 g0 | r0 r0 r0 r0 r0 r0 r0 r0 | g1 g1 g1 g1 g1 g1 g1 g1 | r1 r1 r1 r1 r1 r1 r1 r1 |
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *    | r1 r1 g1 g1 r0 r0 g0 g0 | g2 g2 g2 g2 g2 g2 g2 g2 | r2 r2 r2 r2 r2 r2 r2 r2 | g3 g3 g3 g3 g3 g3 g3 g3 |
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *    | r3 r3 r3 r3 r3 r3 r3 r3 | r3 r3 g3 g3 r2 r2 g2 g2 |
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *
>>> + * - 12-bits per sample
>>> + *   Every two consecutive samples are packed into three bytes. Each of the
>>> + *   first two bytes contain the 8 high order bits of the pixels, and the third
>>> + *   byte contains the four least-significant bits of each pixel, in the same
>>> + *   order.
>>> + *
>>> + *   For example, DRM_FORMAT_BAYER_GRBG12 with MIPI_FORMAT_MOD_CSI2_PACKED:
>>> + *
>>> + *    0                                              row 0 (GRGR)                                            31
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *    | g0 g0 g0 g0 g0 g0 g0 g0 | r0 r0 r0 r0 r0 r0 r0 r0 | r0 r0 r0 r0 g0 g0 g0 g0 | g1 g1 g1 g1 g1 g1 g1 g1 |
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *    | r1 r1 r1 r1 r1 r1 r1 r1 | r1 r1 r1 r1 g1 g1 g1 g1 |
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *
>>> + *    0                                              row 1 (BGBG)                                            31
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *    | b0 b0 b0 b0 b0 b0 b0 b0 | g0 g0 g0 g0 g0 g0 g0 g0 | g0 g0 g0 g0 b0 b0 b0 b0 | b1 b1 b1 b1 b1 b1 b1 b1 |
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *    | g1 g1 g1 g1 g1 g1 g1 g1 | g1 g1 g1 g1 b1 b1 b1 b1 |
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *
>>> + * - 14-bits per sample
>>> + *   Every four consecutive samples are packed into seven bytes. Each of the
>>> + *   first four bytes contain the eight high order bits of the pixels, and the
>>> + *   three following bytes contains the six least-significant bits of each
>>> + *   pixel, in the same order.
>>> + *
>>> + *   For example, DRM_FORMAT_BAYER_GBRG14 with MIPI_FORMAT_MOD_CSI2_PACKED:
>>> + *
>>> + *    0                                            row 0 (GBGBGBGB)                                          31
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *    | g0 g0 g0 g0 g0 g0 g0 g0 | b0 b0 b0 b0 b0 b0 b0 b0 | g1 g1 g1 g1 g1 g1 g1 g1 | b1 b1 b1 b1 b1 b1 b1 b1 |
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *    | b0 b0 g0 g0 g0 g0 g0 g0 | g1 g1 g1 g1 b0 b0 b0 b0 | b1 b1 b1 b1 b1 b1 g1 g1 | g2 g2 g2 g2 g2 g2 g2 g2 |
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *    | b2 b2 b2 b2 b2 b2 b2 b2 | g3 g3 g3 g3 g3 g3 g3 g3 | b3 b3 b3 b3 b3 b3 b3 b3 | b2 b2 g2 g2 g2 g2 g2 g2 |
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *    | g3 g3 g3 g3 b2 b2 b2 b2 | b3 b3 b3 b3 b3 b3 g3 g3 |
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *
>>> + *    0                                            row 1 (RGRGRGRG)                                          31
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *    | r0 r0 r0 r0 r0 r0 r0 r0 | g0 g0 g0 g0 g0 g0 g0 g0 | r1 r1 r1 r1 r1 r1 r1 r1 | g1 g1 g1 g1 g1 g1 g1 g1 |
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *    | g0 g0 r0 r0 r0 r0 r0 r0 | r1 r1 r1 r1 g0 g0 g0 g0 | g1 g1 g1 g1 g1 g1 r1 r1 | r2 r2 r2 r2 r2 r2 r2 r2 |
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *    | g2 g2 g2 g2 g2 g2 g2 g2 | r3 r3 r3 r3 r3 r3 r3 r3 | g3 g3 g3 g3 g3 g3 g3 g3 | g2 g2 r2 r2 r2 r2 r2 r2 |
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + *    | r3 r3 r3 r3 g2 g2 g2 g2 | g3 g3 g3 g3 g3 g3 r3 r3 |
>>> + *    +  -  -  -  -  -  -  -  - +  -  -  -  -  -  -  -  - +
>>> + */
>>> +#define MIPI_FORMAT_MOD_CSI2_PACKED fourcc_mod_code(MIPI, 1)
>>> +
>>>  #if defined(__cplusplus)
>>>  }
>>>  #endif
> 



More information about the dri-devel mailing list