Rev 5068 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5068 | Rev 6110 | ||
---|---|---|---|
Line 125... | Line 125... | ||
125 | #define DRM_FORMAT_YUV422 fourcc_code('Y', 'U', '1', '6') /* 2x1 subsampled Cb (1) and Cr (2) planes */ |
125 | #define DRM_FORMAT_YUV422 fourcc_code('Y', 'U', '1', '6') /* 2x1 subsampled Cb (1) and Cr (2) planes */ |
126 | #define DRM_FORMAT_YVU422 fourcc_code('Y', 'V', '1', '6') /* 2x1 subsampled Cr (1) and Cb (2) planes */ |
126 | #define DRM_FORMAT_YVU422 fourcc_code('Y', 'V', '1', '6') /* 2x1 subsampled Cr (1) and Cb (2) planes */ |
127 | #define DRM_FORMAT_YUV444 fourcc_code('Y', 'U', '2', '4') /* non-subsampled Cb (1) and Cr (2) planes */ |
127 | #define DRM_FORMAT_YUV444 fourcc_code('Y', 'U', '2', '4') /* non-subsampled Cb (1) and Cr (2) planes */ |
128 | #define DRM_FORMAT_YVU444 fourcc_code('Y', 'V', '2', '4') /* non-subsampled Cr (1) and Cb (2) planes */ |
128 | #define DRM_FORMAT_YVU444 fourcc_code('Y', 'V', '2', '4') /* non-subsampled Cr (1) and Cb (2) planes */ |
Line -... | Line 129... | ||
- | 129 | ||
- | 130 | ||
- | 131 | /* |
|
- | 132 | * Format Modifiers: |
|
- | 133 | * |
|
- | 134 | * Format modifiers describe, typically, a re-ordering or modification |
|
- | 135 | * of the data in a plane of an FB. This can be used to express tiled/ |
|
- | 136 | * swizzled formats, or compression, or a combination of the two. |
|
- | 137 | * |
|
- | 138 | * The upper 8 bits of the format modifier are a vendor-id as assigned |
|
- | 139 | * below. The lower 56 bits are assigned as vendor sees fit. |
|
- | 140 | */ |
|
- | 141 | ||
- | 142 | /* Vendor Ids: */ |
|
- | 143 | #define DRM_FORMAT_MOD_NONE 0 |
|
- | 144 | #define DRM_FORMAT_MOD_VENDOR_INTEL 0x01 |
|
- | 145 | #define DRM_FORMAT_MOD_VENDOR_AMD 0x02 |
|
- | 146 | #define DRM_FORMAT_MOD_VENDOR_NV 0x03 |
|
- | 147 | #define DRM_FORMAT_MOD_VENDOR_SAMSUNG 0x04 |
|
- | 148 | #define DRM_FORMAT_MOD_VENDOR_QCOM 0x05 |
|
- | 149 | /* add more to the end as needed */ |
|
- | 150 | ||
- | 151 | #define fourcc_mod_code(vendor, val) \ |
|
- | 152 | ((((__u64)DRM_FORMAT_MOD_VENDOR_## vendor) << 56) | (val & 0x00ffffffffffffffULL)) |
|
- | 153 | ||
- | 154 | /* |
|
- | 155 | * Format Modifier tokens: |
|
- | 156 | * |
|
- | 157 | * When adding a new token please document the layout with a code comment, |
|
- | 158 | * similar to the fourcc codes above. drm_fourcc.h is considered the |
|
- | 159 | * authoritative source for all of these. |
|
- | 160 | */ |
|
- | 161 | ||
- | 162 | /* Intel framebuffer modifiers */ |
|
- | 163 | ||
- | 164 | /* |
|
- | 165 | * Intel X-tiling layout |
|
- | 166 | * |
|
- | 167 | * This is a tiled layout using 4Kb tiles (except on gen2 where the tiles 2Kb) |
|
- | 168 | * in row-major layout. Within the tile bytes are laid out row-major, with |
|
- | 169 | * a platform-dependent stride. On top of that the memory can apply |
|
- | 170 | * platform-depending swizzling of some higher address bits into bit6. |
|
- | 171 | * |
|
- | 172 | * This format is highly platforms specific and not useful for cross-driver |
|
- | 173 | * sharing. It exists since on a given platform it does uniquely identify the |
|
- | 174 | * layout in a simple way for i915-specific userspace. |
|
- | 175 | */ |
|
- | 176 | #define I915_FORMAT_MOD_X_TILED fourcc_mod_code(INTEL, 1) |
|
- | 177 | ||
- | 178 | /* |
|
- | 179 | * Intel Y-tiling layout |
|
- | 180 | * |
|
- | 181 | * This is a tiled layout using 4Kb tiles (except on gen2 where the tiles 2Kb) |
|
- | 182 | * in row-major layout. Within the tile bytes are laid out in OWORD (16 bytes) |
|
- | 183 | * chunks column-major, with a platform-dependent height. On top of that the |
|
- | 184 | * memory can apply platform-depending swizzling of some higher address bits |
|
- | 185 | * into bit6. |
|
- | 186 | * |
|
- | 187 | * This format is highly platforms specific and not useful for cross-driver |
|
- | 188 | * sharing. It exists since on a given platform it does uniquely identify the |
|
- | 189 | * layout in a simple way for i915-specific userspace. |
|
- | 190 | */ |
|
- | 191 | #define I915_FORMAT_MOD_Y_TILED fourcc_mod_code(INTEL, 2) |
|
- | 192 | ||
- | 193 | /* |
|
- | 194 | * Intel Yf-tiling layout |
|
- | 195 | * |
|
- | 196 | * This is a tiled layout using 4Kb tiles in row-major layout. |
|
- | 197 | * Within the tile pixels are laid out in 16 256 byte units / sub-tiles which |
|
- | 198 | * are arranged in four groups (two wide, two high) with column-major layout. |
|
- | 199 | * Each group therefore consits out of four 256 byte units, which are also laid |
|
- | 200 | * out as 2x2 column-major. |
|
- | 201 | * 256 byte units are made out of four 64 byte blocks of pixels, producing |
|
- | 202 | * either a square block or a 2:1 unit. |
|
- | 203 | * 64 byte blocks of pixels contain four pixel rows of 16 bytes, where the width |
|
- | 204 | * in pixel depends on the pixel depth. |
|
- | 205 | */ |
|
- | 206 | #define I915_FORMAT_MOD_Yf_TILED fourcc_mod_code(INTEL, 3) |
|
- | 207 | ||
- | 208 | /* |
|
- | 209 | * Tiled, NV12MT, grouped in 64 (pixels) x 32 (lines) -sized macroblocks |
|
- | 210 | * |
|
- | 211 | * Macroblocks are laid in a Z-shape, and each pixel data is following the |
|
- | 212 | * standard NV12 style. |
|
- | 213 | * As for NV12, an image is the result of two frame buffers: one for Y, |
|
- | 214 | * one for the interleaved Cb/Cr components (1/2 the height of the Y buffer). |
|
- | 215 | * Alignment requirements are (for each buffer): |
|
- | 216 | * - multiple of 128 pixels for the width |
|
- | 217 | * - multiple of 32 pixels for the height |
|
- | 218 | * |
|
- | 219 | * For more information: see http://linuxtv.org/downloads/v4l-dvb-apis/re32.html |
|
- | 220 | */ |
|
- | 221 | #define DRM_FORMAT_MOD_SAMSUNG_64_32_TILE fourcc_mod_code(SAMSUNG, 1) |
|
129 | 222 |