drm-uapi: Update drm_fourcc.h for new TGL modifier
Pull in the header from drm-next commit 32c3d9b0f51ee1e6bb0160496b97e50b5caca4d0. Among other things, this brings in the I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC modifier. Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9230>
This commit is contained in:
parent
0092219cfe
commit
7a69942d29
|
@ -58,6 +58,30 @@ extern "C" {
|
|||
* may preserve meaning - such as number of planes - from the fourcc code,
|
||||
* whereas others may not.
|
||||
*
|
||||
* Modifiers must uniquely encode buffer layout. In other words, a buffer must
|
||||
* match only a single modifier. A modifier must not be a subset of layouts of
|
||||
* another modifier. For instance, it's incorrect to encode pitch alignment in
|
||||
* a modifier: a buffer may match a 64-pixel aligned modifier and a 32-pixel
|
||||
* aligned modifier. That said, modifiers can have implicit minimal
|
||||
* requirements.
|
||||
*
|
||||
* For modifiers where the combination of fourcc code and modifier can alias,
|
||||
* a canonical pair needs to be defined and used by all drivers. Preferred
|
||||
* combinations are also encouraged where all combinations might lead to
|
||||
* confusion and unnecessarily reduced interoperability. An example for the
|
||||
* latter is AFBC, where the ABGR layouts are preferred over ARGB layouts.
|
||||
*
|
||||
* There are two kinds of modifier users:
|
||||
*
|
||||
* - Kernel and user-space drivers: for drivers it's important that modifiers
|
||||
* don't alias, otherwise two drivers might support the same format but use
|
||||
* different aliases, preventing them from sharing buffers in an efficient
|
||||
* format.
|
||||
* - Higher-level programs interfacing with KMS/GBM/EGL/Vulkan/etc: these users
|
||||
* see modifiers as opaque tokens they can check for equality and intersect.
|
||||
* These users musn't need to know to reason about the modifier value
|
||||
* (i.e. they are not expected to extract information out of the modifier).
|
||||
*
|
||||
* Vendors should document their modifier usage in as much detail as
|
||||
* possible, to ensure maximum compatibility across devices, drivers and
|
||||
* applications.
|
||||
|
@ -155,6 +179,12 @@ extern "C" {
|
|||
#define DRM_FORMAT_ARGB16161616F fourcc_code('A', 'R', '4', 'H') /* [63:0] A:R:G:B 16:16:16:16 little endian */
|
||||
#define DRM_FORMAT_ABGR16161616F fourcc_code('A', 'B', '4', 'H') /* [63:0] A:B:G:R 16:16:16:16 little endian */
|
||||
|
||||
/*
|
||||
* RGBA format with 10-bit components packed in 64-bit per pixel, with 6 bits
|
||||
* of unused padding per component:
|
||||
*/
|
||||
#define DRM_FORMAT_AXBXGXRX106106106106 fourcc_code('A', 'B', '1', '0') /* [63:0] A:x:B:x:G:x:R:x 10:6:10:6:10:6:10:6 little endian */
|
||||
|
||||
/* packed YCbCr */
|
||||
#define DRM_FORMAT_YUYV fourcc_code('Y', 'U', 'Y', 'V') /* [31:0] Cr0:Y1:Cb0:Y0 8:8:8:8 little endian */
|
||||
#define DRM_FORMAT_YVYU fourcc_code('Y', 'V', 'Y', 'U') /* [31:0] Cb0:Y1:Cr0:Y0 8:8:8:8 little endian */
|
||||
|
@ -320,7 +350,6 @@ extern "C" {
|
|||
*/
|
||||
|
||||
/* Vendor Ids: */
|
||||
#define DRM_FORMAT_MOD_NONE 0
|
||||
#define DRM_FORMAT_MOD_VENDOR_NONE 0
|
||||
#define DRM_FORMAT_MOD_VENDOR_INTEL 0x01
|
||||
#define DRM_FORMAT_MOD_VENDOR_AMD 0x02
|
||||
|
@ -392,6 +421,16 @@ extern "C" {
|
|||
*/
|
||||
#define DRM_FORMAT_MOD_LINEAR fourcc_mod_code(NONE, 0)
|
||||
|
||||
/*
|
||||
* Deprecated: use DRM_FORMAT_MOD_LINEAR instead
|
||||
*
|
||||
* The "none" format modifier doesn't actually mean that the modifier is
|
||||
* implicit, instead it means that the layout is linear. Whether modifiers are
|
||||
* used is out-of-band information carried in an API-specific way (e.g. in a
|
||||
* flag for drm_mode_fb_cmd2).
|
||||
*/
|
||||
#define DRM_FORMAT_MOD_NONE 0
|
||||
|
||||
/* Intel framebuffer modifiers */
|
||||
|
||||
/*
|
||||
|
@ -488,6 +527,25 @@ extern "C" {
|
|||
*/
|
||||
#define I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS fourcc_mod_code(INTEL, 7)
|
||||
|
||||
/*
|
||||
* Intel Color Control Surface with Clear Color (CCS) for Gen-12 render
|
||||
* compression.
|
||||
*
|
||||
* The main surface is Y-tiled and is at plane index 0 whereas CCS is linear
|
||||
* and at index 1. The clear color is stored at index 2, and the pitch should
|
||||
* be ignored. The clear color structure is 256 bits. The first 128 bits
|
||||
* represents Raw Clear Color Red, Green, Blue and Alpha color each represented
|
||||
* by 32 bits. The raw clear color is consumed by the 3d engine and generates
|
||||
* the converted clear color of size 64 bits. The first 32 bits store the Lower
|
||||
* Converted Clear Color value and the next 32 bits store the Higher Converted
|
||||
* Clear Color value when applicable. The Converted Clear Color values are
|
||||
* consumed by the DE. The last 64 bits are used to store Color Discard Enable
|
||||
* and Depth Clear Value Valid which are ignored by the DE. A CCS cache line
|
||||
* corresponds to an area of 4x1 tiles in the main surface. The main surface
|
||||
* pitch is required to be a multiple of 4 tile widths.
|
||||
*/
|
||||
#define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC fourcc_mod_code(INTEL, 8)
|
||||
|
||||
/*
|
||||
* Tiled, NV12MT, grouped in 64 (pixels) x 32 (lines) -sized macroblocks
|
||||
*
|
||||
|
@ -671,7 +729,7 @@ extern "C" {
|
|||
* which corresponds to the "generic" kind used for simple single-sample
|
||||
* uncompressed color formats on Fermi - Volta GPUs.
|
||||
*/
|
||||
static __inline__ __u64
|
||||
static inline __u64
|
||||
drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)
|
||||
{
|
||||
if (!(modifier & 0x10) || (modifier & (0xff << 12)))
|
||||
|
@ -997,9 +1055,9 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)
|
|||
* Not all combinations are valid, and different SoCs may support different
|
||||
* combinations of layout and options.
|
||||
*/
|
||||
#define __fourcc_mod_amlogic_layout_mask 0xf
|
||||
#define __fourcc_mod_amlogic_layout_mask 0xff
|
||||
#define __fourcc_mod_amlogic_options_shift 8
|
||||
#define __fourcc_mod_amlogic_options_mask 0xf
|
||||
#define __fourcc_mod_amlogic_options_mask 0xff
|
||||
|
||||
#define DRM_FORMAT_MOD_AMLOGIC_FBC(__layout, __options) \
|
||||
fourcc_mod_code(AMLOGIC, \
|
||||
|
@ -1073,9 +1131,27 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)
|
|||
* - displayable DCC surface in plane 1 (not RB-aligned & not pipe-aligned)
|
||||
* - pipe-aligned DCC surface in plane 2 (RB-aligned & pipe-aligned)
|
||||
*
|
||||
* For formats with multiple format planes (e.g. NV12) all planes for a given
|
||||
* format plane are packed together in a single memory plane based on the
|
||||
* required alignments.
|
||||
* For multi-plane formats the above surfaces get merged into one plane for
|
||||
* each format plane, based on the required alignment only.
|
||||
*
|
||||
* Bits Parameter Notes
|
||||
* ----- ------------------------ ---------------------------------------------
|
||||
*
|
||||
* 7:0 TILE_VERSION Values are AMD_FMT_MOD_TILE_VER_*
|
||||
* 12:8 TILE Values are AMD_FMT_MOD_TILE_<version>_*
|
||||
* 13 DCC
|
||||
* 14 DCC_RETILE
|
||||
* 15 DCC_PIPE_ALIGN
|
||||
* 16 DCC_INDEPENDENT_64B
|
||||
* 17 DCC_INDEPENDENT_128B
|
||||
* 19:18 DCC_MAX_COMPRESSED_BLOCK Values are AMD_FMT_MOD_DCC_BLOCK_*
|
||||
* 20 DCC_CONSTANT_ENCODE
|
||||
* 23:21 PIPE_XOR_BITS Only for some chips
|
||||
* 26:24 BANK_XOR_BITS Only for some chips
|
||||
* 29:27 PACKERS Only for some chips
|
||||
* 32:30 RB Only for some chips
|
||||
* 35:33 PIPE Only for some chips
|
||||
* 55:36 - Reserved for future use, must be zero
|
||||
*/
|
||||
#define AMD_FMT_MOD fourcc_mod_code(AMD, 0)
|
||||
|
||||
|
@ -1158,7 +1234,7 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)
|
|||
#define AMD_FMT_MOD_PIPE_XOR_BITS_MASK 0x7
|
||||
#define AMD_FMT_MOD_BANK_XOR_BITS_SHIFT 24
|
||||
#define AMD_FMT_MOD_BANK_XOR_BITS_MASK 0x7
|
||||
#define AMD_FMT_MOD_PACKERS_SHIFT 27 /* aliases with BANK_XOR_BITS */
|
||||
#define AMD_FMT_MOD_PACKERS_SHIFT 27
|
||||
#define AMD_FMT_MOD_PACKERS_MASK 0x7
|
||||
#define AMD_FMT_MOD_RB_SHIFT 30
|
||||
#define AMD_FMT_MOD_RB_MASK 0x7
|
||||
|
|
Loading…
Reference in New Issue