Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t 0/4] Add Meteorlake CCS support
@ 2023-05-16 15:43 Juha-Pekka Heikkila
  2023-05-16 15:43 ` [igt-dev] [PATCH i-g-t 1/4] drm/fourcc: Import drm_fourcc header from commit c7c12de893f8 ("drm/fourcc: define Intel Meteorlake related ccs modifiers") Juha-Pekka Heikkila
                   ` (5 more replies)
  0 siblings, 6 replies; 11+ messages in thread
From: Juha-Pekka Heikkila @ 2023-05-16 15:43 UTC (permalink / raw)
  To: igt-dev

Import fourcc codes from kernel and built support for MTL 4-tile aux ccs type
compression support for render and vebox copy paths.

/Juha-Pekka

Juha-Pekka Heikkila (4):
  drm/fourcc: Import drm_fourcc header from commit c7c12de893f8
    ("drm/fourcc: define Intel Meteorlake related ccs modifiers")
  lib/mtl: Add MTL related tile4 ccs modifiers handling
  tests/i915/kms_ccs: enable mtl aux ccs tests
  tests/kms_getfb: Add meteorlake related ccs modifiers

 include/drm-uapi/drm_fourcc.h | 156 +++++++++++++++++++++++++++++++---
 lib/igt_fb.c                  |  30 +++++--
 lib/intel_aux_pgtable.c       |  79 ++++++++++++-----
 lib/intel_batchbuffer.c       |  15 +++-
 lib/rendercopy.h              |   8 ++
 lib/rendercopy_gen9.c         |  44 +++++++++-
 lib/veboxcopy_gen12.c         |  79 ++++++++---------
 tests/i915/kms_ccs.c          |   6 +-
 tests/kms_getfb.c             |  13 ++-
 9 files changed, 345 insertions(+), 85 deletions(-)

-- 
2.25.1

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [igt-dev] [PATCH i-g-t 1/4] drm/fourcc: Import drm_fourcc header from commit c7c12de893f8 ("drm/fourcc: define Intel Meteorlake related ccs modifiers")
  2023-05-16 15:43 [igt-dev] [PATCH i-g-t 0/4] Add Meteorlake CCS support Juha-Pekka Heikkila
@ 2023-05-16 15:43 ` Juha-Pekka Heikkila
  2023-05-22 12:07   ` Kahola, Mika
  2023-05-16 15:43 ` [igt-dev] [PATCH i-g-t 2/4] lib/mtl: Add MTL related tile4 ccs modifiers handling Juha-Pekka Heikkila
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 11+ messages in thread
From: Juha-Pekka Heikkila @ 2023-05-16 15:43 UTC (permalink / raw)
  To: igt-dev

commit c7c12de893f8 ("drm/fourcc: define Intel Meteorlake related ccs modifiers")
Author: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Date:   Sun May 14 21:42:39 2023 +0300

    drm/fourcc: define Intel Meteorlake related ccs modifiers

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
 include/drm-uapi/drm_fourcc.h | 156 +++++++++++++++++++++++++++++++---
 1 file changed, 145 insertions(+), 11 deletions(-)

diff --git a/include/drm-uapi/drm_fourcc.h b/include/drm-uapi/drm_fourcc.h
index 78bebdea..8db7fd3f 100644
--- a/include/drm-uapi/drm_fourcc.h
+++ b/include/drm-uapi/drm_fourcc.h
@@ -88,6 +88,18 @@ extern "C" {
  *
  * The authoritative list of format modifier codes is found in
  * `include/uapi/drm/drm_fourcc.h`
+ *
+ * Open Source User Waiver
+ * -----------------------
+ *
+ * Because this is the authoritative source for pixel formats and modifiers
+ * referenced by GL, Vulkan extensions and other standards and hence used both
+ * by open source and closed source driver stacks, the usual requirement for an
+ * upstream in-kernel or open source userspace user does not apply.
+ *
+ * To ensure, as much as feasible, compatibility across stacks and avoid
+ * confusion with incompatible enumerations stakeholders for all relevant driver
+ * stacks should approve additions.
  */
 
 #define fourcc_code(a, b, c, d) ((__u32)(a) | ((__u32)(b) << 8) | \
@@ -99,18 +111,42 @@ extern "C" {
 #define DRM_FORMAT_INVALID	0
 
 /* color index */
+#define DRM_FORMAT_C1		fourcc_code('C', '1', ' ', ' ') /* [7:0] C0:C1:C2:C3:C4:C5:C6:C7 1:1:1:1:1:1:1:1 eight pixels/byte */
+#define DRM_FORMAT_C2		fourcc_code('C', '2', ' ', ' ') /* [7:0] C0:C1:C2:C3 2:2:2:2 four pixels/byte */
+#define DRM_FORMAT_C4		fourcc_code('C', '4', ' ', ' ') /* [7:0] C0:C1 4:4 two pixels/byte */
 #define DRM_FORMAT_C8		fourcc_code('C', '8', ' ', ' ') /* [7:0] C */
 
-/* 8 bpp Red */
+/* 1 bpp Darkness (inverse relationship between channel value and brightness) */
+#define DRM_FORMAT_D1		fourcc_code('D', '1', ' ', ' ') /* [7:0] D0:D1:D2:D3:D4:D5:D6:D7 1:1:1:1:1:1:1:1 eight pixels/byte */
+
+/* 2 bpp Darkness (inverse relationship between channel value and brightness) */
+#define DRM_FORMAT_D2		fourcc_code('D', '2', ' ', ' ') /* [7:0] D0:D1:D2:D3 2:2:2:2 four pixels/byte */
+
+/* 4 bpp Darkness (inverse relationship between channel value and brightness) */
+#define DRM_FORMAT_D4		fourcc_code('D', '4', ' ', ' ') /* [7:0] D0:D1 4:4 two pixels/byte */
+
+/* 8 bpp Darkness (inverse relationship between channel value and brightness) */
+#define DRM_FORMAT_D8		fourcc_code('D', '8', ' ', ' ') /* [7:0] D */
+
+/* 1 bpp Red (direct relationship between channel value and brightness) */
+#define DRM_FORMAT_R1		fourcc_code('R', '1', ' ', ' ') /* [7:0] R0:R1:R2:R3:R4:R5:R6:R7 1:1:1:1:1:1:1:1 eight pixels/byte */
+
+/* 2 bpp Red (direct relationship between channel value and brightness) */
+#define DRM_FORMAT_R2		fourcc_code('R', '2', ' ', ' ') /* [7:0] R0:R1:R2:R3 2:2:2:2 four pixels/byte */
+
+/* 4 bpp Red (direct relationship between channel value and brightness) */
+#define DRM_FORMAT_R4		fourcc_code('R', '4', ' ', ' ') /* [7:0] R0:R1 4:4 two pixels/byte */
+
+/* 8 bpp Red (direct relationship between channel value and brightness) */
 #define DRM_FORMAT_R8		fourcc_code('R', '8', ' ', ' ') /* [7:0] R */
 
-/* 10 bpp Red */
+/* 10 bpp Red (direct relationship between channel value and brightness) */
 #define DRM_FORMAT_R10		fourcc_code('R', '1', '0', ' ') /* [15:0] x:R 6:10 little endian */
 
-/* 12 bpp Red */
+/* 12 bpp Red (direct relationship between channel value and brightness) */
 #define DRM_FORMAT_R12		fourcc_code('R', '1', '2', ' ') /* [15:0] x:R 4:12 little endian */
 
-/* 16 bpp Red */
+/* 16 bpp Red (direct relationship between channel value and brightness) */
 #define DRM_FORMAT_R16		fourcc_code('R', '1', '6', ' ') /* [15:0] R little endian */
 
 /* 16 bpp RG */
@@ -205,7 +241,9 @@ extern "C" {
 #define DRM_FORMAT_VYUY		fourcc_code('V', 'Y', 'U', 'Y') /* [31:0] Y1:Cb0:Y0:Cr0 8:8:8:8 little endian */
 
 #define DRM_FORMAT_AYUV		fourcc_code('A', 'Y', 'U', 'V') /* [31:0] A:Y:Cb:Cr 8:8:8:8 little endian */
+#define DRM_FORMAT_AVUY8888	fourcc_code('A', 'V', 'U', 'Y') /* [31:0] A:Cr:Cb:Y 8:8:8:8 little endian */
 #define DRM_FORMAT_XYUV8888	fourcc_code('X', 'Y', 'U', 'V') /* [31:0] X:Y:Cb:Cr 8:8:8:8 little endian */
+#define DRM_FORMAT_XVUY8888	fourcc_code('X', 'V', 'U', 'Y') /* [31:0] X:Cr:Cb:Y 8:8:8:8 little endian */
 #define DRM_FORMAT_VUY888	fourcc_code('V', 'U', '2', '4') /* [23:0] Cr:Cb:Y 8:8:8 little endian */
 #define DRM_FORMAT_VUY101010	fourcc_code('V', 'U', '3', '0') /* Y followed by U then V, 10:10:10. Non-linear modifier only */
 
@@ -559,7 +597,7 @@ extern "C" {
  *
  * 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
+ * be 64 bytes aligned. 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
@@ -612,13 +650,56 @@ extern "C" {
  * outside of the GEM object in a reserved memory area dedicated for the
  * storage of the CCS data for all RC/RC_CC/MC compressible GEM objects. The
  * main surface pitch is required to be a multiple of four Tile 4 widths. The
- * clear color is stored at plane index 1 and the pitch should be ignored. The
- * format of the 256 bits of clear color data matches the one used for the
- * I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC modifier, see its description
+ * clear color is stored at plane index 1 and the pitch should be 64 bytes
+ * aligned. The format of the 256 bits of clear color data matches the one used
+ * for the I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC modifier, see its description
  * for details.
  */
 #define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC fourcc_mod_code(INTEL, 12)
 
+/*
+ * Intel Color Control Surfaces (CCS) for display ver. 14 render compression.
+ *
+ * The main surface is tile4 and at plane index 0, the CCS is linear and
+ * at index 1. A 64B CCS cache line corresponds to an area of 4x1 tiles in
+ * main surface. In other words, 4 bits in CCS map to a main surface cache
+ * line pair. The main surface pitch is required to be a multiple of four
+ * tile4 widths.
+ */
+#define I915_FORMAT_MOD_4_TILED_MTL_RC_CCS fourcc_mod_code(INTEL, 13)
+
+/*
+ * Intel Color Control Surfaces (CCS) for display ver. 14 media compression
+ *
+ * The main surface is tile4 and at plane index 0, the CCS is linear and
+ * at index 1. A 64B CCS cache line corresponds to an area of 4x1 tiles in
+ * main surface. In other words, 4 bits in CCS map to a main surface cache
+ * line pair. The main surface pitch is required to be a multiple of four
+ * tile4 widths. For semi-planar formats like NV12, CCS planes follow the
+ * Y and UV planes i.e., planes 0 and 1 are used for Y and UV surfaces,
+ * planes 2 and 3 for the respective CCS.
+ */
+#define I915_FORMAT_MOD_4_TILED_MTL_MC_CCS fourcc_mod_code(INTEL, 14)
+
+/*
+ * Intel Color Control Surface with Clear Color (CCS) for display ver. 14 render
+ * compression.
+ *
+ * The main surface is tile4 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_4_TILED_MTL_RC_CCS_CC fourcc_mod_code(INTEL, 15)
+
 /*
  * Tiled, NV12MT, grouped in 64 (pixels) x 32 (lines) -sized macroblocks
  *
@@ -656,6 +737,28 @@ extern "C" {
  */
 #define DRM_FORMAT_MOD_QCOM_COMPRESSED	fourcc_mod_code(QCOM, 1)
 
+/*
+ * Qualcomm Tiled Format
+ *
+ * Similar to DRM_FORMAT_MOD_QCOM_COMPRESSED but not compressed.
+ * Implementation may be platform and base-format specific.
+ *
+ * Each macrotile consists of m x n (mostly 4 x 4) tiles.
+ * Pixel data pitch/stride is aligned with macrotile width.
+ * Pixel data height is aligned with macrotile height.
+ * Entire pixel data buffer is aligned with 4k(bytes).
+ */
+#define DRM_FORMAT_MOD_QCOM_TILED3	fourcc_mod_code(QCOM, 3)
+
+/*
+ * Qualcomm Alternate Tiled Format
+ *
+ * Alternate tiled format typically only used within GMEM.
+ * Implementation may be platform and base-format specific.
+ */
+#define DRM_FORMAT_MOD_QCOM_TILED2	fourcc_mod_code(QCOM, 2)
+
+
 /* Vivante framebuffer modifiers */
 
 /*
@@ -696,6 +799,35 @@ extern "C" {
  */
 #define DRM_FORMAT_MOD_VIVANTE_SPLIT_SUPER_TILED fourcc_mod_code(VIVANTE, 4)
 
+/*
+ * Vivante TS (tile-status) buffer modifiers. They can be combined with all of
+ * the color buffer tiling modifiers defined above. When TS is present it's a
+ * separate buffer containing the clear/compression status of each tile. The
+ * modifiers are defined as VIVANTE_MOD_TS_c_s, where c is the color buffer
+ * tile size in bytes covered by one entry in the status buffer and s is the
+ * number of status bits per entry.
+ * We reserve the top 8 bits of the Vivante modifier space for tile status
+ * clear/compression modifiers, as future cores might add some more TS layout
+ * variations.
+ */
+#define VIVANTE_MOD_TS_64_4               (1ULL << 48)
+#define VIVANTE_MOD_TS_64_2               (2ULL << 48)
+#define VIVANTE_MOD_TS_128_4              (3ULL << 48)
+#define VIVANTE_MOD_TS_256_4              (4ULL << 48)
+#define VIVANTE_MOD_TS_MASK               (0xfULL << 48)
+
+/*
+ * Vivante compression modifiers. Those depend on a TS modifier being present
+ * as the TS bits get reinterpreted as compression tags instead of simple
+ * clear markers when compression is enabled.
+ */
+#define VIVANTE_MOD_COMP_DEC400           (1ULL << 52)
+#define VIVANTE_MOD_COMP_MASK             (0xfULL << 52)
+
+/* Masking out the extension bits will yield the base modifier. */
+#define VIVANTE_MOD_EXT_MASK              (VIVANTE_MOD_TS_MASK | \
+                                           VIVANTE_MOD_COMP_MASK)
+
 /* NVIDIA frame buffer modifiers */
 
 /*
@@ -802,7 +934,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)))
@@ -1341,6 +1473,7 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)
 #define AMD_FMT_MOD_TILE_VER_GFX9 1
 #define AMD_FMT_MOD_TILE_VER_GFX10 2
 #define AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS 3
+#define AMD_FMT_MOD_TILE_VER_GFX11 4
 
 /*
  * 64K_S is the same for GFX9/GFX10/GFX10_RBPLUS and hence has GFX9 as canonical
@@ -1356,6 +1489,7 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)
 #define AMD_FMT_MOD_TILE_GFX9_64K_S_X 25
 #define AMD_FMT_MOD_TILE_GFX9_64K_D_X 26
 #define AMD_FMT_MOD_TILE_GFX9_64K_R_X 27
+#define AMD_FMT_MOD_TILE_GFX11_256K_R_X 31
 
 #define AMD_FMT_MOD_DCC_BLOCK_64B 0
 #define AMD_FMT_MOD_DCC_BLOCK_128B 1
@@ -1422,11 +1556,11 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)
 #define AMD_FMT_MOD_PIPE_MASK 0x7
 
 #define AMD_FMT_MOD_SET(field, value) \
-	((uint64_t)(value) << AMD_FMT_MOD_##field##_SHIFT)
+	((__u64)(value) << AMD_FMT_MOD_##field##_SHIFT)
 #define AMD_FMT_MOD_GET(field, value) \
 	(((value) >> AMD_FMT_MOD_##field##_SHIFT) & AMD_FMT_MOD_##field##_MASK)
 #define AMD_FMT_MOD_CLEAR(field) \
-	(~((uint64_t)AMD_FMT_MOD_##field##_MASK << AMD_FMT_MOD_##field##_SHIFT))
+	(~((__u64)AMD_FMT_MOD_##field##_MASK << AMD_FMT_MOD_##field##_SHIFT))
 
 #if defined(__cplusplus)
 }
-- 
2.25.1

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [igt-dev] [PATCH i-g-t 2/4] lib/mtl: Add MTL related tile4 ccs modifiers handling
  2023-05-16 15:43 [igt-dev] [PATCH i-g-t 0/4] Add Meteorlake CCS support Juha-Pekka Heikkila
  2023-05-16 15:43 ` [igt-dev] [PATCH i-g-t 1/4] drm/fourcc: Import drm_fourcc header from commit c7c12de893f8 ("drm/fourcc: define Intel Meteorlake related ccs modifiers") Juha-Pekka Heikkila
@ 2023-05-16 15:43 ` Juha-Pekka Heikkila
  2023-05-23  9:12   ` Kahola, Mika
  2023-05-16 15:43 ` [igt-dev] [PATCH i-g-t 3/4] tests/i915/kms_ccs: enable mtl aux ccs tests Juha-Pekka Heikkila
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 11+ messages in thread
From: Juha-Pekka Heikkila @ 2023-05-16 15:43 UTC (permalink / raw)
  To: igt-dev

Add tile4 type ccs modifiers with aux buffer in fb structure

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
 lib/igt_fb.c            | 30 +++++++++++++---
 lib/intel_aux_pgtable.c | 79 +++++++++++++++++++++++++++++------------
 lib/intel_batchbuffer.c | 15 ++++++--
 lib/rendercopy.h        |  8 +++++
 lib/rendercopy_gen9.c   | 44 ++++++++++++++++++++++-
 lib/veboxcopy_gen12.c   | 79 +++++++++++++++++++++--------------------
 6 files changed, 186 insertions(+), 69 deletions(-)

diff --git a/lib/igt_fb.c b/lib/igt_fb.c
index 0fe5b6ad..71a199d4 100644
--- a/lib/igt_fb.c
+++ b/lib/igt_fb.c
@@ -454,6 +454,9 @@ void igt_get_fb_tile_size(int fd, uint64_t modifier, int fb_bpp,
 			*height_ret = 8;
 		}
 		break;
+	case I915_FORMAT_MOD_4_TILED_MTL_RC_CCS:
+	case I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC:
+	case I915_FORMAT_MOD_4_TILED_MTL_MC_CCS:
 	case I915_FORMAT_MOD_Y_TILED:
 	case I915_FORMAT_MOD_Y_TILED_CCS:
 	case I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS:
@@ -572,7 +575,8 @@ void igt_get_fb_tile_size(int fd, uint64_t modifier, int fb_bpp,
 static bool is_gen12_mc_ccs_modifier(uint64_t modifier)
 {
 	return modifier == I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS ||
-		modifier == I915_FORMAT_MOD_4_TILED_DG2_MC_CCS;
+		modifier == I915_FORMAT_MOD_4_TILED_DG2_MC_CCS ||
+		modifier == I915_FORMAT_MOD_4_TILED_MTL_MC_CCS;
 }
 
 static bool is_gen12_ccs_modifier(uint64_t modifier)
@@ -581,7 +585,9 @@ static bool is_gen12_ccs_modifier(uint64_t modifier)
 		modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS ||
 		modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC ||
 		modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS ||
-		modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC;
+		modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC ||
+		modifier == I915_FORMAT_MOD_4_TILED_MTL_RC_CCS ||
+		modifier == I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC;
 }
 
 static bool is_ccs_modifier(uint64_t modifier)
@@ -611,8 +617,9 @@ static bool is_gen12_ccs_plane(const struct igt_fb *fb, int plane)
 
 static bool is_gen12_ccs_cc_plane(const struct igt_fb *fb, int plane)
 {
-	if (fb->modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC &&
-	    plane == 2)
+	if (plane == 2 &&
+	    (fb->modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC ||
+	     fb->modifier == I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC))
 		return true;
 
 	if (fb->modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC &&
@@ -706,6 +713,7 @@ static int fb_num_planes(const struct igt_fb *fb)
 		num_planes *= 2;
 
 	if (fb->modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC ||
+	    fb->modifier == I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC ||
 	    fb->modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC)
 		num_planes++;
 
@@ -903,6 +911,11 @@ static unsigned int get_plane_alignment(struct igt_fb *fb, int color_plane)
 
 	alignment = lcm(tile_row_size, 64 * 1024);
 
+	if (is_yuv_semiplanar_plane(fb, color_plane) &&
+	    fb->modifier == I915_FORMAT_MOD_4_TILED_MTL_MC_CCS &&
+	    (alignment & ((1 << 20) - 1)))
+		alignment = 1 << 20;
+
 	return alignment;
 }
 
@@ -989,6 +1002,9 @@ uint64_t igt_fb_mod_to_tiling(uint64_t modifier)
 	case I915_FORMAT_MOD_4_TILED_DG2_RC_CCS:
 	case I915_FORMAT_MOD_4_TILED_DG2_MC_CCS:
 	case I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC:
+	case I915_FORMAT_MOD_4_TILED_MTL_RC_CCS:
+	case I915_FORMAT_MOD_4_TILED_MTL_MC_CCS:
+	case I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC:
 		return I915_TILING_4;
 	case I915_FORMAT_MOD_Yf_TILED:
 	case I915_FORMAT_MOD_Yf_TILED_CCS:
@@ -2614,7 +2630,8 @@ igt_fb_create_intel_buf(int fd, struct buf_ops *bops,
 				 end - fb->offsets[i]);
 	}
 
-	if (fb->modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC)
+	if (fb->modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC ||
+	    fb->modifier == I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC)
 		buf->cc.offset = fb->offsets[2];
 
 	if (fb->modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC)
@@ -4656,10 +4673,13 @@ const char *igt_fb_modifier_name(uint64_t modifier)
 		return "Y-MC_CCS";
 	case I915_FORMAT_MOD_4_TILED:
 		return "4";
+	case I915_FORMAT_MOD_4_TILED_MTL_RC_CCS:
 	case I915_FORMAT_MOD_4_TILED_DG2_RC_CCS:
 		return "4-RC_CCS";
+	case I915_FORMAT_MOD_4_TILED_MTL_MC_CCS:
 	case I915_FORMAT_MOD_4_TILED_DG2_MC_CCS:
 		return "4-MC_CCS";
+	case I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC:
 	case I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC:
 		return "4-RC_CCS-CC";
 	default:
diff --git a/lib/intel_aux_pgtable.c b/lib/intel_aux_pgtable.c
index 946ca60b..7c795213 100644
--- a/lib/intel_aux_pgtable.c
+++ b/lib/intel_aux_pgtable.c
@@ -5,6 +5,7 @@
 #include "intel_aux_pgtable.h"
 #include "intel_batchbuffer.h"
 #include "intel_bufops.h"
+#include "intel_chipset.h"
 #include "ioctl_wrappers.h"
 
 #include "i915/gem_mman.h"
@@ -12,22 +13,6 @@
 #define BITMASK(e, s)		((~0ULL << (s)) & \
 				 (~0ULL >> (BITS_PER_LONG_LONG - 1 - (e))))
 
-/* The unit size to which the AUX CCS surface is aligned to. */
-#define AUX_CCS_UNIT_SIZE	64
-/*
- * The block size on the AUX CCS surface which is mapped by one L1 AUX
- * pagetable entry.
- */
-#define AUX_CCS_BLOCK_SIZE	(4 * AUX_CCS_UNIT_SIZE)
-/*
- * The block size on the main surface mapped by one AUX CCS block:
- *   256 bytes per CCS block *
- *   8   bits per byte /
- *   2   bits per main surface CL *
- *   64  bytes per main surface CL
- */
-#define MAIN_SURFACE_BLOCK_SIZE	(AUX_CCS_BLOCK_SIZE * 8 / 2 * 64)
-
 #define GFX_ADDRESS_BITS	48
 
 #define AUX_FORMAT_YCRCB	0x03
@@ -357,14 +342,24 @@ pgt_populate_entries_for_buf(struct pgtable *pgt,
 	uint64_t aux_addr = buf->addr.offset + buf->ccs[surface_idx].offset;
 	uint64_t l1_flags = pgt_get_l1_flags(buf, surface_idx);
 	uint64_t lx_flags = pgt_get_lx_flags();
+	uint64_t aux_ccs_block_size = 1 << pgt->level_info->desc[0].entry_ptr_shift;
+
+	/*
+	 * The block size on the main surface mapped by one AUX CCS block:
+	 *       CCS block size *
+	 *   8   bits per byte /
+	 *   2   bits per main surface CL *
+	 *   64  bytes per main surface CL
+	 */
+	uint64_t main_surface_block_size = aux_ccs_block_size * 8 / 2 * 64;
 
 	igt_assert(!(buf->surface[surface_idx].stride % 512));
 	igt_assert_eq(buf->ccs[surface_idx].stride,
 		      buf->surface[surface_idx].stride / 512 * 64);
 
 	for (; surface_addr < surface_end;
-	     surface_addr += MAIN_SURFACE_BLOCK_SIZE,
-	     aux_addr += AUX_CCS_BLOCK_SIZE) {
+	     surface_addr += main_surface_block_size,
+	     aux_addr += aux_ccs_block_size) {
 		uint64_t table = top_table;
 		int level;
 
@@ -445,7 +440,7 @@ struct intel_buf *
 intel_aux_pgtable_create(struct intel_bb *ibb,
 			 struct intel_buf **bufs, int buf_count)
 {
-	static const struct pgtable_level_desc level_desc[] = {
+	static const struct pgtable_level_desc level_desc_table_tgl[] = {
 		{
 			.idx_shift = 16,
 			.idx_bits = 8,
@@ -458,6 +453,26 @@ intel_aux_pgtable_create(struct intel_bb *ibb,
 			.entry_ptr_shift = 13,
 			.table_size = 32 * 1024,
 		},
+		{
+			.idx_shift = 36,
+			.idx_bits = 12,
+			.entry_ptr_shift = 15,
+			.table_size = 32 * 1024,
+		}
+	};
+	static const struct pgtable_level_desc level_desc_table_mtl[] = {
+		{
+			.idx_shift = 20,
+			.idx_bits = 4,
+			.entry_ptr_shift = 12,
+			.table_size = 8 * 1024,
+		},
+		{
+			.idx_shift = 24,
+			.idx_bits = 12,
+			.entry_ptr_shift = 11,
+			.table_size = 32 * 1024,
+		},
 		{
 			.idx_shift = 36,
 			.idx_bits = 12,
@@ -465,6 +480,9 @@ intel_aux_pgtable_create(struct intel_bb *ibb,
 			.table_size = 32 * 1024,
 		},
 	};
+
+	const struct pgtable_level_desc *level_desc;
+	uint32_t levels;
 	struct pgtable *pgt;
 	struct buf_ops *bops;
 	struct intel_buf *buf;
@@ -472,7 +490,15 @@ intel_aux_pgtable_create(struct intel_bb *ibb,
 	igt_assert(buf_count);
 	bops = bufs[0]->bops;
 
-	pgt = pgt_create(level_desc, ARRAY_SIZE(level_desc), bufs, buf_count);
+	if (IS_METEORLAKE(ibb->devid)) {
+		level_desc = level_desc_table_mtl;
+		levels = ARRAY_SIZE(level_desc_table_mtl);
+	} else {
+		level_desc = level_desc_table_tgl;
+		levels = ARRAY_SIZE(level_desc_table_tgl);
+	}
+
+	pgt = pgt_create(&level_desc[0], levels, bufs, buf_count);
 	pgt->ibb = ibb;
 	pgt->buf = intel_buf_create(bops, pgt->size, 1, 8, 0, I915_TILING_NONE,
 				    I915_COMPRESSION_NONE);
@@ -637,8 +663,17 @@ gen12_create_aux_pgtable_state(struct intel_bb *ibb,
 void
 gen12_emit_aux_pgtable_state(struct intel_bb *ibb, uint32_t state, bool render)
 {
-	uint32_t table_base_reg = render ? GEN12_GFX_AUX_TABLE_BASE_ADDR :
-					   GEN12_VEBOX_AUX_TABLE_BASE_ADDR;
+	uint32_t table_base_reg;
+
+	if (render) {
+		table_base_reg = GEN12_GFX_AUX_TABLE_BASE_ADDR;
+	} else {
+		/* Vebox */
+		if (IS_METEORLAKE(ibb->devid))
+			table_base_reg = 0x380000 + GEN12_VEBOX_AUX_TABLE_BASE_ADDR;
+		else
+			table_base_reg = GEN12_VEBOX_AUX_TABLE_BASE_ADDR;
+	}
 
 	if (!state)
 		return;
diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
index 545d1705..9667c694 100644
--- a/lib/intel_batchbuffer.c
+++ b/lib/intel_batchbuffer.c
@@ -671,8 +671,10 @@ igt_render_copyfunc_t igt_get_render_copyfunc(int devid)
 		copy = gen9_render_copyfunc;
 	else if (IS_GEN11(devid))
 		copy = gen11_render_copyfunc;
-	else if (HAS_4TILE(devid))
+	else if (HAS_FLATCCS(devid))
 		copy = gen12p71_render_copyfunc;
+	else if (IS_METEORLAKE(devid))
+		copy = mtl_render_copyfunc;
 	else if (IS_GEN12(devid))
 		copy = gen12_render_copyfunc;
 
@@ -691,7 +693,9 @@ igt_vebox_copyfunc_t igt_get_vebox_copyfunc(int devid)
 
 igt_render_clearfunc_t igt_get_render_clearfunc(int devid)
 {
-	if (IS_DG2(devid)) {
+	if (IS_METEORLAKE(devid)) {
+		return mtl_render_clearfunc;
+	} else if (IS_DG2(devid)) {
 		return gen12p71_render_clearfunc;
 	} else if (IS_GEN12(devid)) {
 		return gen12_render_clearfunc;
@@ -1758,8 +1762,13 @@ __intel_bb_add_intel_buf(struct intel_bb *ibb, struct intel_buf *buf,
 	if (!alignment) {
 		alignment = 0x1000;
 
+		/*
+		 * TODO:
+		 * Find out why MTL need special alignment, spec says 32k
+		 * is enough for MTL.
+		 */
 		if (ibb->gen >= 12 && buf->compression)
-			alignment = 0x10000;
+			alignment = IS_METEORLAKE(ibb->devid) ? 0x100000 : 0x10000;
 
 		/* For gen3 ensure tiled buffers are aligned to power of two size */
 		if (ibb->gen == 3 && buf->tiling) {
diff --git a/lib/rendercopy.h b/lib/rendercopy.h
index 480fdee8..0d81d27f 100644
--- a/lib/rendercopy.h
+++ b/lib/rendercopy.h
@@ -23,6 +23,10 @@ static inline void emit_vertex_normalized(struct intel_bb *ibb,
 	intel_bb_out(ibb, u.ui);
 }
 
+void mtl_render_clearfunc(struct intel_bb *ibb,
+			  struct intel_buf *dst, unsigned int dst_x, unsigned int dst_y,
+			  unsigned int width, unsigned int height,
+			  const float clear_color[4]);
 void gen12p71_render_clearfunc(struct intel_bb *ibb,
 			       struct intel_buf *dst, unsigned int dst_x, unsigned int dst_y,
 			       unsigned int width, unsigned int height,
@@ -31,6 +35,10 @@ void gen12_render_clearfunc(struct intel_bb *ibb,
 			    struct intel_buf *dst, unsigned int dst_x, unsigned int dst_y,
 			    unsigned int width, unsigned int height,
 			    const float clear_color[4]);
+void mtl_render_copyfunc(struct intel_bb *ibb,
+			 struct intel_buf *src, uint32_t src_x, uint32_t src_y,
+			 uint32_t width, uint32_t height,
+			 struct intel_buf *dst, uint32_t dst_x, uint32_t dst_y);
 void gen12p71_render_copyfunc(struct intel_bb *ibb,
 			      struct intel_buf *src, uint32_t src_x, uint32_t src_y,
 			      uint32_t width, uint32_t height,
diff --git a/lib/rendercopy_gen9.c b/lib/rendercopy_gen9.c
index 650d0950..db67b5ee 100644
--- a/lib/rendercopy_gen9.c
+++ b/lib/rendercopy_gen9.c
@@ -277,7 +277,9 @@ gen8_bind_buf(struct intel_bb *ibb, const struct intel_buf *buf, int is_dst,
 
 			ss->ss12.clear_address = (address + buf->cc.offset) >> 6;
 			ss->ss13.clear_address_hi = (address + buf->cc.offset) >> 32;
-		} else if (HAS_FLATCCS(ibb->devid)) {
+		}
+
+		if (HAS_4TILE(ibb->devid)) {
 			ss->ss7.dg2.memory_compression_type = 0;
 			ss->ss7.dg2.memory_compression_enable = 0;
 			ss->ss7.dg2.disable_support_for_multi_gpu_partial_writes = 1;
@@ -1245,6 +1247,27 @@ void gen12p71_render_copyfunc(struct intel_bb *ibb,
 			sizeof(gen12p71_render_copy));
 }
 
+void mtl_render_copyfunc(struct intel_bb *ibb,
+			 struct intel_buf *src,
+			 unsigned int src_x, unsigned int src_y,
+			 unsigned int width, unsigned int height,
+			 struct intel_buf *dst,
+			 unsigned int dst_x, unsigned int dst_y)
+{
+	struct aux_pgtable_info pgtable_info = { };
+
+	gen12_aux_pgtable_init(&pgtable_info, ibb, src, dst);
+
+	_gen9_render_op(ibb, src, src_x, src_y,
+			width, height, dst, dst_x, dst_y,
+			pgtable_info.pgtable_buf,
+			NULL,
+			gen12p71_render_copy,
+			sizeof(gen12p71_render_copy));
+
+	gen12_aux_pgtable_cleanup(ibb, &pgtable_info);
+}
+
 void gen12_render_clearfunc(struct intel_bb *ibb,
 			    struct intel_buf *dst,
 			    unsigned int dst_x, unsigned int dst_y,
@@ -1277,3 +1300,22 @@ void gen12p71_render_clearfunc(struct intel_bb *ibb,
 			gen12p71_render_copy,
 			sizeof(gen12p71_render_copy));
 }
+
+void mtl_render_clearfunc(struct intel_bb *ibb,
+			  struct intel_buf *dst,
+			  unsigned int dst_x, unsigned int dst_y,
+			  unsigned int width, unsigned int height,
+			  const float clear_color[4])
+{
+	struct aux_pgtable_info pgtable_info = { };
+
+	gen12_aux_pgtable_init(&pgtable_info, ibb, NULL, dst);
+
+	_gen9_render_op(ibb, NULL, 0, 0,
+			width, height, dst, dst_x, dst_y,
+			pgtable_info.pgtable_buf,
+			clear_color,
+			gen12p71_render_copy,
+			sizeof(gen12p71_render_copy));
+	gen12_aux_pgtable_cleanup(ibb, &pgtable_info);
+}
diff --git a/lib/veboxcopy_gen12.c b/lib/veboxcopy_gen12.c
index aa90939b..4ab6ced3 100644
--- a/lib/veboxcopy_gen12.c
+++ b/lib/veboxcopy_gen12.c
@@ -158,13 +158,36 @@ static bool format_is_interleaved_yuv(int format)
 	return false;
 }
 
+static uint32_t compression_format(int format, struct intel_buf *buf)
+{
+	if (buf->compression == I915_COMPRESSION_NONE)
+		return 0;
+
+	switch (format) {
+	case R8G8B8A8_UNORM:
+		return 0xa;
+	case PLANAR_420_8:
+		return 0xf;
+	case PLANAR_420_16:
+		return 8;
+	case YCRCB_NORMAL:
+		return 3;
+	case PACKED_444A_8:
+		return 9;
+	default:
+		igt_assert(0);
+	}
+}
+
 static void emit_surface_state_cmd(struct intel_bb *ibb,
 				   int surface_id,
-				   int width, int height, int bpp,
-				   int pitch, uint32_t tiling, int format,
-				   uint32_t uv_offset)
+				   int width, int height,
+				   struct intel_buf *buf, int format)
 {
 	struct vebox_surface_state *ss;
+	int pitch = buf->surface[0].stride;
+	uint32_t uv_offset = buf->surface[1].offset;
+	uint32_t tiling = buf->tiling;
 
 	ss = intel_bb_ptr_align(ibb, 4);
 
@@ -185,35 +208,16 @@ static void emit_surface_state_cmd(struct intel_bb *ibb,
 
 	ss->ss4.u_y_offset = uv_offset / pitch;
 
-	if (HAS_FLATCCS(ibb->devid)) {
+	if (HAS_4TILE(ibb->devid)) {
 		/*
-		 * f-tile = 3 (Tile F)
+		 * tile4 = 3
 		 */
 		ss->ss3.dg2.tile_mode = (tiling != I915_TILING_NONE) ? 3 : 0;
 
-		switch (format) {
-		case R8G8B8A8_UNORM:
-			ss->ss7.dg2.compression_format = 0xa;
-			break;
-		case PLANAR_420_8:
-			ss->ss7.dg2.compression_format = 0xf;
-			break;
-		case PLANAR_420_16:
-			ss->ss7.dg2.compression_format = 8;
-			break;
-		case YCRCB_NORMAL:
-			ss->ss7.dg2.compression_format = 3;
-			break;
-		case PACKED_444A_8:
-			ss->ss7.dg2.compression_format = 0x9;
-			break;
-		default:
-			igt_assert(0);
-		}
+		ss->ss7.dg2.compression_format = compression_format(format, buf);
 	} else {
 		ss->ss3.tgl.tile_walk = (tiling == I915_TILING_Y) ||
-			(tiling == I915_TILING_Yf) ||
-			(tiling == I915_TILING_4);
+			(tiling == I915_TILING_Yf);
 		ss->ss3.tgl.tiled_surface = tiling != I915_TILING_NONE;
 	}
 
@@ -246,9 +250,10 @@ static void emit_tiling_convert_cmd(struct intel_bb *ibb,
 	}
 
 	if (HAS_4TILE(ibb->devid))
-		tc->tc1_2.input_mocs_idx = 3;
-	else
-		tc->tc1_2.input_tiled_resource_mode = src->tiling == I915_TILING_Yf;
+		tc->tc1_2.input_mocs_idx = IS_DG2(ibb->devid) ? 3 : 9;
+
+	tc->tc1_2.input_tiled_resource_mode = src->tiling == I915_TILING_Yf;
+
 	reloc_delta = tc->tc1_2_l;
 
 	igt_assert(src->addr.offset == ALIGN(src->addr.offset, 0x1000));
@@ -267,9 +272,9 @@ static void emit_tiling_convert_cmd(struct intel_bb *ibb,
 	}
 
 	if (HAS_4TILE(ibb->devid))
-		tc->tc3_4.output_mocs_idx = 3;
-	else
-		tc->tc3_4.output_tiled_resource_mode = dst->tiling == I915_TILING_Yf;
+		tc->tc3_4.output_mocs_idx = IS_DG2(ibb->devid) ? 3 : 9;
+
+	tc->tc3_4.output_tiled_resource_mode = dst->tiling == I915_TILING_Yf;
 
 	reloc_delta = tc->tc3_4_l;
 
@@ -344,14 +349,12 @@ void gen12_vebox_copyfunc(struct intel_bb *ibb,
 	igt_assert(!src->format_is_yuv_semiplanar ||
 		   (src->surface[1].offset && dst->surface[1].offset));
 	emit_surface_state_cmd(ibb, VEBOX_SURFACE_INPUT,
-			       width, height, src->bpp,
-			       src->surface[0].stride,
-			       src->tiling, format, src->surface[1].offset);
+			       width, height,
+			       src, format);
 
 	emit_surface_state_cmd(ibb, VEBOX_SURFACE_OUTPUT,
-			       width, height, dst->bpp,
-			       dst->surface[0].stride,
-			       dst->tiling, format, dst->surface[1].offset);
+			       width, height,
+			       dst, format);
 
 	emit_tiling_convert_cmd(ibb, src, dst);
 
-- 
2.25.1

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [igt-dev] [PATCH i-g-t 3/4] tests/i915/kms_ccs: enable mtl aux ccs tests
  2023-05-16 15:43 [igt-dev] [PATCH i-g-t 0/4] Add Meteorlake CCS support Juha-Pekka Heikkila
  2023-05-16 15:43 ` [igt-dev] [PATCH i-g-t 1/4] drm/fourcc: Import drm_fourcc header from commit c7c12de893f8 ("drm/fourcc: define Intel Meteorlake related ccs modifiers") Juha-Pekka Heikkila
  2023-05-16 15:43 ` [igt-dev] [PATCH i-g-t 2/4] lib/mtl: Add MTL related tile4 ccs modifiers handling Juha-Pekka Heikkila
@ 2023-05-16 15:43 ` Juha-Pekka Heikkila
  2023-05-22 12:54   ` Kahola, Mika
  2023-05-16 15:43 ` [igt-dev] [PATCH i-g-t 4/4] tests/kms_getfb: Add meteorlake related ccs modifiers Juha-Pekka Heikkila
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 11+ messages in thread
From: Juha-Pekka Heikkila @ 2023-05-16 15:43 UTC (permalink / raw)
  To: igt-dev

Added
I915_FORMAT_MOD_4_TILED_MTL_RC_CCS
I915_FORMAT_MOD_4_TILED_MTL_MC_CCS
I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC
for testing.

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
 tests/i915/kms_ccs.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tests/i915/kms_ccs.c b/tests/i915/kms_ccs.c
index 1b3462ea..abe464b4 100644
--- a/tests/i915/kms_ccs.c
+++ b/tests/i915/kms_ccs.c
@@ -101,6 +101,9 @@ static const struct {
 	{I915_FORMAT_MOD_4_TILED_DG2_RC_CCS, "4_tiled_dg2_rc_ccs"},
 	{I915_FORMAT_MOD_4_TILED_DG2_MC_CCS, "4_tiled_dg2_mc_ccs"},
 	{I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC, "4_tiled_dg2_rc_ccs_cc"},
+	{I915_FORMAT_MOD_4_TILED_MTL_RC_CCS, "4_tiled_mtl_rc_ccs"},
+	{I915_FORMAT_MOD_4_TILED_MTL_MC_CCS, "4_tiled_mtl_mc_ccs"},
+	{I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC, "4_tiled_mtl_rc_ccs_cc"},
 };
 
 static bool check_ccs_planes;
@@ -161,7 +164,8 @@ create_fb_prepare_add(int drm_fd, int width, int height,
 static bool is_ccs_cc_modifier(uint64_t modifier)
 {
 	return modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC ||
-		modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC;
+	       modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC ||
+	       modifier == I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC;
 }
 
 /*
-- 
2.25.1

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [igt-dev] [PATCH i-g-t 4/4] tests/kms_getfb: Add meteorlake related ccs modifiers
  2023-05-16 15:43 [igt-dev] [PATCH i-g-t 0/4] Add Meteorlake CCS support Juha-Pekka Heikkila
                   ` (2 preceding siblings ...)
  2023-05-16 15:43 ` [igt-dev] [PATCH i-g-t 3/4] tests/i915/kms_ccs: enable mtl aux ccs tests Juha-Pekka Heikkila
@ 2023-05-16 15:43 ` Juha-Pekka Heikkila
  2023-05-22 12:56   ` Kahola, Mika
  2023-05-16 17:14 ` [igt-dev] ✓ Fi.CI.BAT: success for Add Meteorlake CCS support Patchwork
  2023-05-17  1:12 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  5 siblings, 1 reply; 11+ messages in thread
From: Juha-Pekka Heikkila @ 2023-05-16 15:43 UTC (permalink / raw)
  To: igt-dev

Add meteorlake related ccs modifiers for getfb2-accept-ccs and
getfb-reject-ccs subtests to allow them to run without skipping.

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
 tests/kms_getfb.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/tests/kms_getfb.c b/tests/kms_getfb.c
index 4adc7eee..f44f4255 100644
--- a/tests/kms_getfb.c
+++ b/tests/kms_getfb.c
@@ -100,10 +100,15 @@ static void get_ccs_fb(int fd, struct drm_mode_fb_cmd2 *ret)
 		size = add.pitches[0] * ALIGN(add.height, 8);
 		size = ALIGN(size, 4096);
 	} else if ((intel_display_ver(devid)) >= 12) {
-		add.modifier[0] = I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS;
-		add.modifier[1] = I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS;
+		add.modifier[0] = IS_METEORLAKE(devid) ?
+			I915_FORMAT_MOD_4_TILED_MTL_RC_CCS :
+			I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS;
 
-		/* The main surface for TGL is 4x4 tiles aligned
+		add.modifier[1] = IS_METEORLAKE(devid) ?
+			I915_FORMAT_MOD_4_TILED_MTL_RC_CCS :
+			I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS;
+
+		/* The main surface for Gen12+ is 4x4 tiles aligned
 		 * For 32bpp the pitch is 4*4*32 bytes i.e. 512 bytes
 		 */
 		add.pitches[0] = ALIGN(add.width * 4, 4 * 128);
@@ -138,7 +143,7 @@ static void get_ccs_fb(int fd, struct drm_mode_fb_cmd2 *ret)
 	add.handles[0] = gem_buffer_create_fb_obj(fd, size);
 	igt_require(add.handles[0] != 0);
 
-	if (!HAS_FLATCCS(intel_get_drm_devid(fd)))
+	if (!HAS_FLATCCS(devid))
 		add.handles[1] = add.handles[0];
 
 	if (drmIoctl(fd, DRM_IOCTL_MODE_ADDFB2, &add) == 0)
-- 
2.25.1

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for Add Meteorlake CCS support
  2023-05-16 15:43 [igt-dev] [PATCH i-g-t 0/4] Add Meteorlake CCS support Juha-Pekka Heikkila
                   ` (3 preceding siblings ...)
  2023-05-16 15:43 ` [igt-dev] [PATCH i-g-t 4/4] tests/kms_getfb: Add meteorlake related ccs modifiers Juha-Pekka Heikkila
@ 2023-05-16 17:14 ` Patchwork
  2023-05-17  1:12 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  5 siblings, 0 replies; 11+ messages in thread
From: Patchwork @ 2023-05-16 17:14 UTC (permalink / raw)
  To: Juha-Pekka Heikkila; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 3356 bytes --]

== Series Details ==

Series: Add Meteorlake CCS support
URL   : https://patchwork.freedesktop.org/series/117822/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_13153 -> IGTPW_8974
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/index.html

Participating hosts (38 -> 36)
------------------------------

  Missing    (2): fi-kbl-soraka fi-snb-2520m 

Known issues
------------

  Here are the changes found in IGTPW_8974 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@i915_module_load@load:
    - bat-adls-5:         [PASS][1] -> [ABORT][2] ([i915#4391])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/bat-adls-5/igt@i915_module_load@load.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/bat-adls-5/igt@i915_module_load@load.html

  * igt@i915_pm_backlight@basic-brightness@edp-1:
    - bat-rplp-1:         NOTRUN -> [ABORT][3] ([i915#7077])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/bat-rplp-1/igt@i915_pm_backlight@basic-brightness@edp-1.html

  
#### Possible fixes ####

  * igt@i915_pm_rpm@basic-rte:
    - {bat-mtlp-8}:       [DMESG-WARN][4] -> [PASS][5]
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/bat-mtlp-8/igt@i915_pm_rpm@basic-rte.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/bat-mtlp-8/igt@i915_pm_rpm@basic-rte.html

  * igt@i915_selftest@live@migrate:
    - bat-dg2-11:         [DMESG-WARN][6] ([i915#7699]) -> [PASS][7]
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/bat-dg2-11/igt@i915_selftest@live@migrate.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/bat-dg2-11/igt@i915_selftest@live@migrate.html

  
#### Warnings ####

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-rplp-1:         [ABORT][8] ([i915#4579] / [i915#8260]) -> [SKIP][9] ([i915#3555] / [i915#4579])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/bat-rplp-1/igt@kms_setmode@basic-clone-single-crtc.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/bat-rplp-1/igt@kms_setmode@basic-clone-single-crtc.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#4391]: https://gitlab.freedesktop.org/drm/intel/issues/4391
  [i915#4579]: https://gitlab.freedesktop.org/drm/intel/issues/4579
  [i915#7077]: https://gitlab.freedesktop.org/drm/intel/issues/7077
  [i915#7699]: https://gitlab.freedesktop.org/drm/intel/issues/7699
  [i915#8260]: https://gitlab.freedesktop.org/drm/intel/issues/8260


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_7292 -> IGTPW_8974

  CI-20190529: 20190529
  CI_DRM_13153: 1ceecfa94dd4a059164b23925aecc9db4c4fd3b6 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8974: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/index.html
  IGT_7292: 9d9475ffd3b5ae18fd8ec120595385f6c562f249 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git


Testlist changes
----------------

+++ 216 lines
--- 0 lines

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/index.html

[-- Attachment #2: Type: text/html, Size: 4143 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [igt-dev] ✓ Fi.CI.IGT: success for Add Meteorlake CCS support
  2023-05-16 15:43 [igt-dev] [PATCH i-g-t 0/4] Add Meteorlake CCS support Juha-Pekka Heikkila
                   ` (4 preceding siblings ...)
  2023-05-16 17:14 ` [igt-dev] ✓ Fi.CI.BAT: success for Add Meteorlake CCS support Patchwork
@ 2023-05-17  1:12 ` Patchwork
  5 siblings, 0 replies; 11+ messages in thread
From: Patchwork @ 2023-05-17  1:12 UTC (permalink / raw)
  To: Juha-Pekka Heikkila; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 27540 bytes --]

== Series Details ==

Series: Add Meteorlake CCS support
URL   : https://patchwork.freedesktop.org/series/117822/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_13153_full -> IGTPW_8974_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/index.html

Participating hosts (7 -> 7)
------------------------------

  No changes in participating hosts

New tests
---------

  New tests have been introduced between CI_DRM_13153_full and IGTPW_8974_full:

### New IGT tests (108) ###

  * igt@kms_ccs@pipe-a-bad-aux-stride-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-bad-aux-stride-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-bad-aux-stride-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-bad-pixel-format-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-bad-pixel-format-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-bad-pixel-format-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-bad-rotation-90-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-bad-rotation-90-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-bad-rotation-90-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-ccs-on-another-bo-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-ccs-on-another-bo-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-ccs-on-another-bo-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-crc-primary-basic-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-crc-primary-basic-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-crc-primary-basic-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-crc-primary-rotation-180-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-crc-primary-rotation-180-4_tiled_mtl_rc_ccs:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-crc-primary-rotation-180-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-crc-sprite-planes-basic-4_tiled_mtl_mc_ccs:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-missing-ccs-buffer-4_tiled_mtl_mc_ccs:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-missing-ccs-buffer-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-missing-ccs-buffer-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-random-ccs-data-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-random-ccs-data-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-a-random-ccs-data-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-bad-aux-stride-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-bad-aux-stride-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-bad-aux-stride-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-bad-pixel-format-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-bad-pixel-format-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-bad-pixel-format-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-bad-rotation-90-4_tiled_mtl_mc_ccs:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-bad-rotation-90-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-bad-rotation-90-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-ccs-on-another-bo-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-ccs-on-another-bo-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-ccs-on-another-bo-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-crc-primary-basic-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-crc-primary-basic-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-crc-primary-basic-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-crc-primary-rotation-180-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-crc-primary-rotation-180-4_tiled_mtl_rc_ccs:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-crc-primary-rotation-180-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-crc-sprite-planes-basic-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-missing-ccs-buffer-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-missing-ccs-buffer-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-missing-ccs-buffer-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-random-ccs-data-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-random-ccs-data-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-b-random-ccs-data-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-bad-aux-stride-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-bad-aux-stride-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-bad-aux-stride-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-bad-pixel-format-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-bad-pixel-format-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-bad-pixel-format-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-bad-rotation-90-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-bad-rotation-90-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-bad-rotation-90-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-ccs-on-another-bo-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-ccs-on-another-bo-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-ccs-on-another-bo-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-crc-primary-basic-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-crc-primary-basic-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-crc-primary-basic-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-crc-primary-rotation-180-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-crc-primary-rotation-180-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-crc-primary-rotation-180-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-crc-sprite-planes-basic-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-missing-ccs-buffer-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-missing-ccs-buffer-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-missing-ccs-buffer-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-random-ccs-data-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-random-ccs-data-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-c-random-ccs-data-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-bad-aux-stride-4_tiled_mtl_mc_ccs:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-bad-aux-stride-4_tiled_mtl_rc_ccs:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-bad-aux-stride-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-bad-pixel-format-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-bad-pixel-format-4_tiled_mtl_rc_ccs:
    - Statuses : 4 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-bad-pixel-format-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-bad-rotation-90-4_tiled_mtl_mc_ccs:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-bad-rotation-90-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-bad-rotation-90-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-ccs-on-another-bo-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-ccs-on-another-bo-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-ccs-on-another-bo-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-crc-primary-basic-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-crc-primary-basic-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-crc-primary-basic-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-crc-primary-rotation-180-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-crc-primary-rotation-180-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-crc-primary-rotation-180-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-crc-sprite-planes-basic-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-crc-sprite-planes-basic-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-missing-ccs-buffer-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-missing-ccs-buffer-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-missing-ccs-buffer-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-random-ccs-data-4_tiled_mtl_mc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-random-ccs-data-4_tiled_mtl_rc_ccs:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_ccs@pipe-d-random-ccs-data-4_tiled_mtl_rc_ccs_cc:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  

Known issues
------------

  Here are the changes found in IGTPW_8974_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@drm_mm@all-tests:
    - shard-snb:          NOTRUN -> [SKIP][1] ([fdo#109271] / [i915#4579]) +3 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-snb4/igt@drm_mm@all-tests.html

  * igt@gem_exec_fair@basic-none-solo@rcs0:
    - shard-glk:          NOTRUN -> [FAIL][2] ([i915#2842])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-glk8/igt@gem_exec_fair@basic-none-solo@rcs0.html

  * igt@gem_exec_fair@basic-pace@vcs0:
    - shard-glk:          [PASS][3] -> [FAIL][4] ([i915#2842]) +1 similar issue
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-glk6/igt@gem_exec_fair@basic-pace@vcs0.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-glk6/igt@gem_exec_fair@basic-pace@vcs0.html

  * igt@gem_huc_copy@huc-copy:
    - shard-glk:          NOTRUN -> [SKIP][5] ([fdo#109271] / [i915#2190])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-glk2/igt@gem_huc_copy@huc-copy.html

  * igt@i915_suspend@basic-s2idle-without-i915:
    - shard-snb:          [PASS][6] -> [ABORT][7] ([i915#4528] / [i915#8189] / [i915#8213])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-snb6/igt@i915_suspend@basic-s2idle-without-i915.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-snb7/igt@i915_suspend@basic-s2idle-without-i915.html

  * igt@kms_ccs@pipe-a-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs:
    - shard-glk:          NOTRUN -> [SKIP][8] ([fdo#109271] / [i915#3886]) +3 similar issues
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-glk3/igt@kms_ccs@pipe-a-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-b-bad-aux-stride-y_tiled_gen12_rc_ccs_cc:
    - shard-snb:          NOTRUN -> [SKIP][9] ([fdo#109271]) +155 similar issues
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-snb7/igt@kms_ccs@pipe-b-bad-aux-stride-y_tiled_gen12_rc_ccs_cc.html

  * {igt@kms_ccs@pipe-c-bad-pixel-format-4_tiled_mtl_rc_ccs} (NEW):
    - {shard-dg1}:        NOTRUN -> [SKIP][10] ([i915#5354]) +107 similar issues
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-dg1-17/igt@kms_ccs@pipe-c-bad-pixel-format-4_tiled_mtl_rc_ccs.html

  * {igt@kms_ccs@pipe-c-crc-primary-rotation-180-4_tiled_mtl_rc_ccs} (NEW):
    - {shard-tglu}:       NOTRUN -> [SKIP][11] ([i915#5354]) +104 similar issues
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-tglu-7/igt@kms_ccs@pipe-c-crc-primary-rotation-180-4_tiled_mtl_rc_ccs.html

  * {igt@kms_ccs@pipe-d-bad-aux-stride-4_tiled_mtl_mc_ccs} (NEW):
    - shard-glk:          NOTRUN -> [SKIP][12] ([fdo#109271]) +182 similar issues
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-glk3/igt@kms_ccs@pipe-d-bad-aux-stride-4_tiled_mtl_mc_ccs.html

  * {igt@kms_ccs@pipe-d-bad-rotation-90-4_tiled_mtl_mc_ccs} (NEW):
    - shard-apl:          NOTRUN -> [SKIP][13] ([fdo#109271]) +110 similar issues
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-apl2/igt@kms_ccs@pipe-d-bad-rotation-90-4_tiled_mtl_mc_ccs.html

  * {igt@kms_ccs@pipe-d-crc-primary-rotation-180-4_tiled_mtl_mc_ccs} (NEW):
    - {shard-rkl}:        NOTRUN -> [SKIP][14] ([i915#5354]) +104 similar issues
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-rkl-2/igt@kms_ccs@pipe-d-crc-primary-rotation-180-4_tiled_mtl_mc_ccs.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
    - shard-glk:          NOTRUN -> [FAIL][15] ([i915#2346])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-glk6/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html

  * igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1:
    - shard-glk:          NOTRUN -> [FAIL][16] ([i915#4573]) +1 similar issue
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-glk1/igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-hdmi-a-1.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-glk:          NOTRUN -> [SKIP][17] ([fdo#109271] / [i915#658])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-glk3/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_scaling_modes@scaling-mode-full:
    - shard-glk:          NOTRUN -> [SKIP][18] ([fdo#109271] / [i915#4579]) +9 similar issues
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-glk9/igt@kms_scaling_modes@scaling-mode-full.html

  
#### Possible fixes ####

  * igt@device_reset@unbind-reset-rebind:
    - {shard-rkl}:        [ABORT][19] ([i915#5507]) -> [PASS][20]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-rkl-2/igt@device_reset@unbind-reset-rebind.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-rkl-3/igt@device_reset@unbind-reset-rebind.html
    - shard-apl:          [ABORT][21] ([i915#5507]) -> [PASS][22]
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-apl1/igt@device_reset@unbind-reset-rebind.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-apl4/igt@device_reset@unbind-reset-rebind.html
    - {shard-tglu}:       [ABORT][23] ([i915#5507]) -> [PASS][24]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-tglu-3/igt@device_reset@unbind-reset-rebind.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-tglu-2/igt@device_reset@unbind-reset-rebind.html

  * igt@drm_fdinfo@most-busy-idle-check-all@rcs0:
    - {shard-rkl}:        [FAIL][25] ([i915#7742]) -> [PASS][26] +1 similar issue
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-rkl-4/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-rkl-6/igt@drm_fdinfo@most-busy-idle-check-all@rcs0.html

  * igt@gem_ctx_freq@sysfs:
    - {shard-dg1}:        [FAIL][27] ([i915#6786]) -> [PASS][28]
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-dg1-12/igt@gem_ctx_freq@sysfs.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-dg1-14/igt@gem_ctx_freq@sysfs.html

  * igt@gem_eio@kms:
    - {shard-dg1}:        [FAIL][29] ([i915#5784]) -> [PASS][30]
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-dg1-18/igt@gem_eio@kms.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-dg1-17/igt@gem_eio@kms.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-glk:          [FAIL][31] ([i915#2842]) -> [PASS][32]
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-glk7/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-glk2/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_fair@basic-pace@rcs0:
    - {shard-rkl}:        [FAIL][33] ([i915#2842]) -> [PASS][34] +1 similar issue
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-rkl-7/igt@gem_exec_fair@basic-pace@rcs0.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-rkl-4/igt@gem_exec_fair@basic-pace@rcs0.html

  * igt@gem_ppgtt@blt-vs-render-ctx0:
    - shard-snb:          [DMESG-FAIL][35] ([i915#8295]) -> [PASS][36]
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-snb6/igt@gem_ppgtt@blt-vs-render-ctx0.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-snb4/igt@gem_ppgtt@blt-vs-render-ctx0.html

  * igt@i915_pm_dc@dc9-dpms:
    - shard-apl:          [SKIP][37] ([fdo#109271]) -> [PASS][38]
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-apl1/igt@i915_pm_dc@dc9-dpms.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-apl6/igt@i915_pm_dc@dc9-dpms.html

  * igt@i915_pm_rc6_residency@rc6-idle@vecs0:
    - {shard-dg1}:        [FAIL][39] ([i915#3591]) -> [PASS][40]
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-dg1-15/igt@i915_pm_rc6_residency@rc6-idle@vecs0.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-dg1-13/igt@i915_pm_rc6_residency@rc6-idle@vecs0.html

  * igt@i915_pm_rps@reset:
    - shard-snb:          [INCOMPLETE][41] ([i915#7790]) -> [PASS][42]
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13153/shard-snb2/igt@i915_pm_rps@reset.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/shard-snb6/igt@i915_pm_rps@reset.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [fdo#110542]: https://bugs.freedesktop.org/show_bug.cgi?id=110542
  [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2436]: https://gitlab.freedesktop.org/drm/intel/issues/2436
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2846]: https://gitlab.freedesktop.org/drm/intel/issues/2846
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#3023]: https://gitlab.freedesktop.org/drm/intel/issues/3023
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3591]: https://gitlab.freedesktop.org/drm/intel/issues/3591
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
  [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734
  [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
  [i915#4528]: https://gitlab.freedesktop.org/drm/intel/issues/4528
  [i915#4573]: https://gitlab.freedesktop.org/drm/intel/issues/4573
  [i915#4579]: https://gitlab.freedesktop.org/drm/intel/issues/4579
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4936]: https://gitlab.freedesktop.org/drm/intel/issues/4936
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
  [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
  [i915#5493]: https://gitlab.freedesktop.org/drm/intel/issues/5493
  [i915#5507]: https://gitlab.freedesktop.org/drm/intel/issues/5507
  [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6230]: https://gitlab.freedesktop.org/drm/intel/issues/6230
  [i915#6268]: https://gitlab.freedesktop.org/drm/intel/issues/6268
  [i915#6335]: https://gitlab.freedesktop.org/drm/intel/issues/6335
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#6768]: https://gitlab.freedesktop.org/drm/intel/issues/6768
  [i915#6786]: https://gitlab.freedesktop.org/drm/intel/issues/6786
  [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
  [i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742
  [i915#7790]: https://gitlab.freedesktop.org/drm/intel/issues/7790
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975
  [i915#8011]: https://gitlab.freedesktop.org/drm/intel/issues/8011
  [i915#8189]: https://gitlab.freedesktop.org/drm/intel/issues/8189
  [i915#8211]: https://gitlab.freedesktop.org/drm/intel/issues/8211
  [i915#8213]: https://gitlab.freedesktop.org/drm/intel/issues/8213
  [i915#8234]: https://gitlab.freedesktop.org/drm/intel/issues/8234
  [i915#8295]: https://gitlab.freedesktop.org/drm/intel/issues/8295


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_7292 -> IGTPW_8974
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_13153: 1ceecfa94dd4a059164b23925aecc9db4c4fd3b6 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8974: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/index.html
  IGT_7292: 9d9475ffd3b5ae18fd8ec120595385f6c562f249 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8974/index.html

[-- Attachment #2: Type: text/html, Size: 29281 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 1/4] drm/fourcc: Import drm_fourcc header from commit c7c12de893f8 ("drm/fourcc: define Intel Meteorlake related ccs modifiers")
  2023-05-16 15:43 ` [igt-dev] [PATCH i-g-t 1/4] drm/fourcc: Import drm_fourcc header from commit c7c12de893f8 ("drm/fourcc: define Intel Meteorlake related ccs modifiers") Juha-Pekka Heikkila
@ 2023-05-22 12:07   ` Kahola, Mika
  0 siblings, 0 replies; 11+ messages in thread
From: Kahola, Mika @ 2023-05-22 12:07 UTC (permalink / raw)
  To: Juha-Pekka Heikkila, igt-dev@lists.freedesktop.org

> -----Original Message-----
> From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Juha-Pekka Heikkila
> Sent: Tuesday, May 16, 2023 6:43 PM
> To: igt-dev@lists.freedesktop.org
> Subject: [igt-dev] [PATCH i-g-t 1/4] drm/fourcc: Import drm_fourcc header from commit c7c12de893f8 ("drm/fourcc: define
> Intel Meteorlake related ccs modifiers")
> 
> commit c7c12de893f8 ("drm/fourcc: define Intel Meteorlake related ccs modifiers")
> Author: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> Date:   Sun May 14 21:42:39 2023 +0300
> 
>     drm/fourcc: define Intel Meteorlake related ccs modifiers
> 

Reviewed-by: Mika Kahola <mika.kahola@intel.com>

> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> ---
>  include/drm-uapi/drm_fourcc.h | 156 +++++++++++++++++++++++++++++++---
>  1 file changed, 145 insertions(+), 11 deletions(-)
> 
> diff --git a/include/drm-uapi/drm_fourcc.h b/include/drm-uapi/drm_fourcc.h index 78bebdea..8db7fd3f 100644
> --- a/include/drm-uapi/drm_fourcc.h
> +++ b/include/drm-uapi/drm_fourcc.h
> @@ -88,6 +88,18 @@ extern "C" {
>   *
>   * The authoritative list of format modifier codes is found in
>   * `include/uapi/drm/drm_fourcc.h`
> + *
> + * Open Source User Waiver
> + * -----------------------
> + *
> + * Because this is the authoritative source for pixel formats and
> + modifiers
> + * referenced by GL, Vulkan extensions and other standards and hence
> + used both
> + * by open source and closed source driver stacks, the usual
> + requirement for an
> + * upstream in-kernel or open source userspace user does not apply.
> + *
> + * To ensure, as much as feasible, compatibility across stacks and
> + avoid
> + * confusion with incompatible enumerations stakeholders for all
> + relevant driver
> + * stacks should approve additions.
>   */
> 
>  #define fourcc_code(a, b, c, d) ((__u32)(a) | ((__u32)(b) << 8) | \ @@ -99,18 +111,42 @@ extern "C" {
>  #define DRM_FORMAT_INVALID	0
> 
>  /* color index */
> +#define DRM_FORMAT_C1		fourcc_code('C', '1', ' ', ' ') /* [7:0] C0:C1:C2:C3:C4:C5:C6:C7 1:1:1:1:1:1:1:1 eight
> pixels/byte */
> +#define DRM_FORMAT_C2		fourcc_code('C', '2', ' ', ' ') /* [7:0] C0:C1:C2:C3 2:2:2:2 four pixels/byte */
> +#define DRM_FORMAT_C4		fourcc_code('C', '4', ' ', ' ') /* [7:0] C0:C1 4:4 two pixels/byte */
>  #define DRM_FORMAT_C8		fourcc_code('C', '8', ' ', ' ') /* [7:0] C */
> 
> -/* 8 bpp Red */
> +/* 1 bpp Darkness (inverse relationship between channel value and brightness) */
> +#define DRM_FORMAT_D1		fourcc_code('D', '1', ' ', ' ') /* [7:0] D0:D1:D2:D3:D4:D5:D6:D7 1:1:1:1:1:1:1:1 eight
> pixels/byte */
> +
> +/* 2 bpp Darkness (inverse relationship between channel value and brightness) */
> +#define DRM_FORMAT_D2		fourcc_code('D', '2', ' ', ' ') /* [7:0] D0:D1:D2:D3 2:2:2:2 four pixels/byte */
> +
> +/* 4 bpp Darkness (inverse relationship between channel value and brightness) */
> +#define DRM_FORMAT_D4		fourcc_code('D', '4', ' ', ' ') /* [7:0] D0:D1 4:4 two pixels/byte */
> +
> +/* 8 bpp Darkness (inverse relationship between channel value and brightness) */
> +#define DRM_FORMAT_D8		fourcc_code('D', '8', ' ', ' ') /* [7:0] D */
> +
> +/* 1 bpp Red (direct relationship between channel value and brightness) */
> +#define DRM_FORMAT_R1		fourcc_code('R', '1', ' ', ' ') /* [7:0] R0:R1:R2:R3:R4:R5:R6:R7 1:1:1:1:1:1:1:1 eight
> pixels/byte */
> +
> +/* 2 bpp Red (direct relationship between channel value and brightness) */
> +#define DRM_FORMAT_R2		fourcc_code('R', '2', ' ', ' ') /* [7:0] R0:R1:R2:R3 2:2:2:2 four pixels/byte */
> +
> +/* 4 bpp Red (direct relationship between channel value and brightness) */
> +#define DRM_FORMAT_R4		fourcc_code('R', '4', ' ', ' ') /* [7:0] R0:R1 4:4 two pixels/byte */
> +
> +/* 8 bpp Red (direct relationship between channel value and brightness)
> +*/
>  #define DRM_FORMAT_R8		fourcc_code('R', '8', ' ', ' ') /* [7:0] R */
> 
> -/* 10 bpp Red */
> +/* 10 bpp Red (direct relationship between channel value and
> +brightness) */
>  #define DRM_FORMAT_R10		fourcc_code('R', '1', '0', ' ') /* [15:0] x:R 6:10 little endian */
> 
> -/* 12 bpp Red */
> +/* 12 bpp Red (direct relationship between channel value and
> +brightness) */
>  #define DRM_FORMAT_R12		fourcc_code('R', '1', '2', ' ') /* [15:0] x:R 4:12 little endian */
> 
> -/* 16 bpp Red */
> +/* 16 bpp Red (direct relationship between channel value and
> +brightness) */
>  #define DRM_FORMAT_R16		fourcc_code('R', '1', '6', ' ') /* [15:0] R little endian */
> 
>  /* 16 bpp RG */
> @@ -205,7 +241,9 @@ extern "C" {
>  #define DRM_FORMAT_VYUY		fourcc_code('V', 'Y', 'U', 'Y') /* [31:0] Y1:Cb0:Y0:Cr0 8:8:8:8 little endian */
> 
>  #define DRM_FORMAT_AYUV		fourcc_code('A', 'Y', 'U', 'V') /* [31:0] A:Y:Cb:Cr 8:8:8:8 little endian */
> +#define DRM_FORMAT_AVUY8888	fourcc_code('A', 'V', 'U', 'Y') /* [31:0] A:Cr:Cb:Y 8:8:8:8 little endian */
>  #define DRM_FORMAT_XYUV8888	fourcc_code('X', 'Y', 'U', 'V') /* [31:0] X:Y:Cb:Cr 8:8:8:8 little endian */
> +#define DRM_FORMAT_XVUY8888	fourcc_code('X', 'V', 'U', 'Y') /* [31:0] X:Cr:Cb:Y 8:8:8:8 little endian */
>  #define DRM_FORMAT_VUY888	fourcc_code('V', 'U', '2', '4') /* [23:0] Cr:Cb:Y 8:8:8 little endian */
>  #define DRM_FORMAT_VUY101010	fourcc_code('V', 'U', '3', '0') /* Y followed by U then V, 10:10:10. Non-linear modifier
> only */
> 
> @@ -559,7 +597,7 @@ extern "C" {
>   *
>   * 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
> + * be 64 bytes aligned. 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 @@ -612,13 +650,56 @@ extern "C" {
>   * outside of the GEM object in a reserved memory area dedicated for the
>   * storage of the CCS data for all RC/RC_CC/MC compressible GEM objects. The
>   * main surface pitch is required to be a multiple of four Tile 4 widths. The
> - * clear color is stored at plane index 1 and the pitch should be ignored. The
> - * format of the 256 bits of clear color data matches the one used for the
> - * I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC modifier, see its description
> + * clear color is stored at plane index 1 and the pitch should be 64
> + bytes
> + * aligned. The format of the 256 bits of clear color data matches the
> + one used
> + * for the I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC modifier, see its
> + description
>   * for details.
>   */
>  #define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC fourcc_mod_code(INTEL, 12)
> 
> +/*
> + * Intel Color Control Surfaces (CCS) for display ver. 14 render compression.
> + *
> + * The main surface is tile4 and at plane index 0, the CCS is linear
> +and
> + * at index 1. A 64B CCS cache line corresponds to an area of 4x1 tiles
> +in
> + * main surface. In other words, 4 bits in CCS map to a main surface
> +cache
> + * line pair. The main surface pitch is required to be a multiple of
> +four
> + * tile4 widths.
> + */
> +#define I915_FORMAT_MOD_4_TILED_MTL_RC_CCS fourcc_mod_code(INTEL, 13)
> +
> +/*
> + * Intel Color Control Surfaces (CCS) for display ver. 14 media
> +compression
> + *
> + * The main surface is tile4 and at plane index 0, the CCS is linear
> +and
> + * at index 1. A 64B CCS cache line corresponds to an area of 4x1 tiles
> +in
> + * main surface. In other words, 4 bits in CCS map to a main surface
> +cache
> + * line pair. The main surface pitch is required to be a multiple of
> +four
> + * tile4 widths. For semi-planar formats like NV12, CCS planes follow
> +the
> + * Y and UV planes i.e., planes 0 and 1 are used for Y and UV surfaces,
> + * planes 2 and 3 for the respective CCS.
> + */
> +#define I915_FORMAT_MOD_4_TILED_MTL_MC_CCS fourcc_mod_code(INTEL, 14)
> +
> +/*
> + * Intel Color Control Surface with Clear Color (CCS) for display ver.
> +14 render
> + * compression.
> + *
> + * The main surface is tile4 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_4_TILED_MTL_RC_CCS_CC fourcc_mod_code(INTEL,
> +15)
> +
>  /*
>   * Tiled, NV12MT, grouped in 64 (pixels) x 32 (lines) -sized macroblocks
>   *
> @@ -656,6 +737,28 @@ extern "C" {
>   */
>  #define DRM_FORMAT_MOD_QCOM_COMPRESSED	fourcc_mod_code(QCOM, 1)
> 
> +/*
> + * Qualcomm Tiled Format
> + *
> + * Similar to DRM_FORMAT_MOD_QCOM_COMPRESSED but not compressed.
> + * Implementation may be platform and base-format specific.
> + *
> + * Each macrotile consists of m x n (mostly 4 x 4) tiles.
> + * Pixel data pitch/stride is aligned with macrotile width.
> + * Pixel data height is aligned with macrotile height.
> + * Entire pixel data buffer is aligned with 4k(bytes).
> + */
> +#define DRM_FORMAT_MOD_QCOM_TILED3	fourcc_mod_code(QCOM, 3)
> +
> +/*
> + * Qualcomm Alternate Tiled Format
> + *
> + * Alternate tiled format typically only used within GMEM.
> + * Implementation may be platform and base-format specific.
> + */
> +#define DRM_FORMAT_MOD_QCOM_TILED2	fourcc_mod_code(QCOM, 2)
> +
> +
>  /* Vivante framebuffer modifiers */
> 
>  /*
> @@ -696,6 +799,35 @@ extern "C" {
>   */
>  #define DRM_FORMAT_MOD_VIVANTE_SPLIT_SUPER_TILED fourcc_mod_code(VIVANTE, 4)
> 
> +/*
> + * Vivante TS (tile-status) buffer modifiers. They can be combined with
> +all of
> + * the color buffer tiling modifiers defined above. When TS is present
> +it's a
> + * separate buffer containing the clear/compression status of each
> +tile. The
> + * modifiers are defined as VIVANTE_MOD_TS_c_s, where c is the color
> +buffer
> + * tile size in bytes covered by one entry in the status buffer and s
> +is the
> + * number of status bits per entry.
> + * We reserve the top 8 bits of the Vivante modifier space for tile
> +status
> + * clear/compression modifiers, as future cores might add some more TS
> +layout
> + * variations.
> + */
> +#define VIVANTE_MOD_TS_64_4               (1ULL << 48)
> +#define VIVANTE_MOD_TS_64_2               (2ULL << 48)
> +#define VIVANTE_MOD_TS_128_4              (3ULL << 48)
> +#define VIVANTE_MOD_TS_256_4              (4ULL << 48)
> +#define VIVANTE_MOD_TS_MASK               (0xfULL << 48)
> +
> +/*
> + * Vivante compression modifiers. Those depend on a TS modifier being
> +present
> + * as the TS bits get reinterpreted as compression tags instead of
> +simple
> + * clear markers when compression is enabled.
> + */
> +#define VIVANTE_MOD_COMP_DEC400           (1ULL << 52)
> +#define VIVANTE_MOD_COMP_MASK             (0xfULL << 52)
> +
> +/* Masking out the extension bits will yield the base modifier. */
> +#define VIVANTE_MOD_EXT_MASK              (VIVANTE_MOD_TS_MASK | \
> +                                           VIVANTE_MOD_COMP_MASK)
> +
>  /* NVIDIA frame buffer modifiers */
> 
>  /*
> @@ -802,7 +934,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))) @@ -1341,6 +1473,7 @@
> drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)  #define AMD_FMT_MOD_TILE_VER_GFX9 1  #define
> AMD_FMT_MOD_TILE_VER_GFX10 2  #define AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS 3
> +#define AMD_FMT_MOD_TILE_VER_GFX11 4
> 
>  /*
>   * 64K_S is the same for GFX9/GFX10/GFX10_RBPLUS and hence has GFX9 as canonical @@ -1356,6 +1489,7 @@
> drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)  #define AMD_FMT_MOD_TILE_GFX9_64K_S_X 25  #define
> AMD_FMT_MOD_TILE_GFX9_64K_D_X 26  #define AMD_FMT_MOD_TILE_GFX9_64K_R_X 27
> +#define AMD_FMT_MOD_TILE_GFX11_256K_R_X 31
> 
>  #define AMD_FMT_MOD_DCC_BLOCK_64B 0
>  #define AMD_FMT_MOD_DCC_BLOCK_128B 1
> @@ -1422,11 +1556,11 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)  #define
> AMD_FMT_MOD_PIPE_MASK 0x7
> 
>  #define AMD_FMT_MOD_SET(field, value) \
> -	((uint64_t)(value) << AMD_FMT_MOD_##field##_SHIFT)
> +	((__u64)(value) << AMD_FMT_MOD_##field##_SHIFT)
>  #define AMD_FMT_MOD_GET(field, value) \
>  	(((value) >> AMD_FMT_MOD_##field##_SHIFT) & AMD_FMT_MOD_##field##_MASK)  #define
> AMD_FMT_MOD_CLEAR(field) \
> -	(~((uint64_t)AMD_FMT_MOD_##field##_MASK << AMD_FMT_MOD_##field##_SHIFT))
> +	(~((__u64)AMD_FMT_MOD_##field##_MASK << AMD_FMT_MOD_##field##_SHIFT))
> 
>  #if defined(__cplusplus)
>  }
> --
> 2.25.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 3/4] tests/i915/kms_ccs: enable mtl aux ccs tests
  2023-05-16 15:43 ` [igt-dev] [PATCH i-g-t 3/4] tests/i915/kms_ccs: enable mtl aux ccs tests Juha-Pekka Heikkila
@ 2023-05-22 12:54   ` Kahola, Mika
  0 siblings, 0 replies; 11+ messages in thread
From: Kahola, Mika @ 2023-05-22 12:54 UTC (permalink / raw)
  To: Juha-Pekka Heikkila, igt-dev@lists.freedesktop.org

> -----Original Message-----
> From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Juha-Pekka Heikkila
> Sent: Tuesday, May 16, 2023 6:43 PM
> To: igt-dev@lists.freedesktop.org
> Subject: [igt-dev] [PATCH i-g-t 3/4] tests/i915/kms_ccs: enable mtl aux ccs tests
> 
> Added
> I915_FORMAT_MOD_4_TILED_MTL_RC_CCS
> I915_FORMAT_MOD_4_TILED_MTL_MC_CCS
> I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC
> for testing.
> 

Reviewed-by: Mika Kahola <mika.kahola@intel.com>

> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> ---
>  tests/i915/kms_ccs.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/tests/i915/kms_ccs.c b/tests/i915/kms_ccs.c index 1b3462ea..abe464b4 100644
> --- a/tests/i915/kms_ccs.c
> +++ b/tests/i915/kms_ccs.c
> @@ -101,6 +101,9 @@ static const struct {
>  	{I915_FORMAT_MOD_4_TILED_DG2_RC_CCS, "4_tiled_dg2_rc_ccs"},
>  	{I915_FORMAT_MOD_4_TILED_DG2_MC_CCS, "4_tiled_dg2_mc_ccs"},
>  	{I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC, "4_tiled_dg2_rc_ccs_cc"},
> +	{I915_FORMAT_MOD_4_TILED_MTL_RC_CCS, "4_tiled_mtl_rc_ccs"},
> +	{I915_FORMAT_MOD_4_TILED_MTL_MC_CCS, "4_tiled_mtl_mc_ccs"},
> +	{I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC, "4_tiled_mtl_rc_ccs_cc"},
>  };
> 
>  static bool check_ccs_planes;
> @@ -161,7 +164,8 @@ create_fb_prepare_add(int drm_fd, int width, int height,  static bool is_ccs_cc_modifier(uint64_t
> modifier)  {
>  	return modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC ||
> -		modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC;
> +	       modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC ||
> +	       modifier == I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC;
>  }
> 
>  /*
> --
> 2.25.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 4/4] tests/kms_getfb: Add meteorlake related ccs modifiers
  2023-05-16 15:43 ` [igt-dev] [PATCH i-g-t 4/4] tests/kms_getfb: Add meteorlake related ccs modifiers Juha-Pekka Heikkila
@ 2023-05-22 12:56   ` Kahola, Mika
  0 siblings, 0 replies; 11+ messages in thread
From: Kahola, Mika @ 2023-05-22 12:56 UTC (permalink / raw)
  To: Juha-Pekka Heikkila, igt-dev@lists.freedesktop.org

> -----Original Message-----
> From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Juha-Pekka Heikkila
> Sent: Tuesday, May 16, 2023 6:43 PM
> To: igt-dev@lists.freedesktop.org
> Subject: [igt-dev] [PATCH i-g-t 4/4] tests/kms_getfb: Add meteorlake related ccs modifiers
> 
> Add meteorlake related ccs modifiers for getfb2-accept-ccs and getfb-reject-ccs subtests to allow them to run without skipping.
> 

Reviewed-by: Mika Kahola <mika.kahola@intel.com>

> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> ---
>  tests/kms_getfb.c | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
> 
> diff --git a/tests/kms_getfb.c b/tests/kms_getfb.c index 4adc7eee..f44f4255 100644
> --- a/tests/kms_getfb.c
> +++ b/tests/kms_getfb.c
> @@ -100,10 +100,15 @@ static void get_ccs_fb(int fd, struct drm_mode_fb_cmd2 *ret)
>  		size = add.pitches[0] * ALIGN(add.height, 8);
>  		size = ALIGN(size, 4096);
>  	} else if ((intel_display_ver(devid)) >= 12) {
> -		add.modifier[0] = I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS;
> -		add.modifier[1] = I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS;
> +		add.modifier[0] = IS_METEORLAKE(devid) ?
> +			I915_FORMAT_MOD_4_TILED_MTL_RC_CCS :
> +			I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS;
> 
> -		/* The main surface for TGL is 4x4 tiles aligned
> +		add.modifier[1] = IS_METEORLAKE(devid) ?
> +			I915_FORMAT_MOD_4_TILED_MTL_RC_CCS :
> +			I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS;
> +
> +		/* The main surface for Gen12+ is 4x4 tiles aligned
>  		 * For 32bpp the pitch is 4*4*32 bytes i.e. 512 bytes
>  		 */
>  		add.pitches[0] = ALIGN(add.width * 4, 4 * 128); @@ -138,7 +143,7 @@ static void get_ccs_fb(int fd, struct
> drm_mode_fb_cmd2 *ret)
>  	add.handles[0] = gem_buffer_create_fb_obj(fd, size);
>  	igt_require(add.handles[0] != 0);
> 
> -	if (!HAS_FLATCCS(intel_get_drm_devid(fd)))
> +	if (!HAS_FLATCCS(devid))
>  		add.handles[1] = add.handles[0];
> 
>  	if (drmIoctl(fd, DRM_IOCTL_MODE_ADDFB2, &add) == 0)
> --
> 2.25.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 2/4] lib/mtl: Add MTL related tile4 ccs modifiers handling
  2023-05-16 15:43 ` [igt-dev] [PATCH i-g-t 2/4] lib/mtl: Add MTL related tile4 ccs modifiers handling Juha-Pekka Heikkila
@ 2023-05-23  9:12   ` Kahola, Mika
  0 siblings, 0 replies; 11+ messages in thread
From: Kahola, Mika @ 2023-05-23  9:12 UTC (permalink / raw)
  To: Juha-Pekka Heikkila, igt-dev@lists.freedesktop.org

> -----Original Message-----
> From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Juha-Pekka Heikkila
> Sent: Tuesday, May 16, 2023 6:43 PM
> To: igt-dev@lists.freedesktop.org
> Subject: [igt-dev] [PATCH i-g-t 2/4] lib/mtl: Add MTL related tile4 ccs modifiers handling
> 
> Add tile4 type ccs modifiers with aux buffer in fb structure
> 

Reviewed-by: Mika Kahola <mika.kahola@intel.com>

> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> ---
>  lib/igt_fb.c            | 30 +++++++++++++---
>  lib/intel_aux_pgtable.c | 79 +++++++++++++++++++++++++++++------------
>  lib/intel_batchbuffer.c | 15 ++++++--
>  lib/rendercopy.h        |  8 +++++
>  lib/rendercopy_gen9.c   | 44 ++++++++++++++++++++++-
>  lib/veboxcopy_gen12.c   | 79 +++++++++++++++++++++--------------------
>  6 files changed, 186 insertions(+), 69 deletions(-)
> 
> diff --git a/lib/igt_fb.c b/lib/igt_fb.c index 0fe5b6ad..71a199d4 100644
> --- a/lib/igt_fb.c
> +++ b/lib/igt_fb.c
> @@ -454,6 +454,9 @@ void igt_get_fb_tile_size(int fd, uint64_t modifier, int fb_bpp,
>  			*height_ret = 8;
>  		}
>  		break;
> +	case I915_FORMAT_MOD_4_TILED_MTL_RC_CCS:
> +	case I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC:
> +	case I915_FORMAT_MOD_4_TILED_MTL_MC_CCS:
>  	case I915_FORMAT_MOD_Y_TILED:
>  	case I915_FORMAT_MOD_Y_TILED_CCS:
>  	case I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS:
> @@ -572,7 +575,8 @@ void igt_get_fb_tile_size(int fd, uint64_t modifier, int fb_bpp,  static bool
> is_gen12_mc_ccs_modifier(uint64_t modifier)  {
>  	return modifier == I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS ||
> -		modifier == I915_FORMAT_MOD_4_TILED_DG2_MC_CCS;
> +		modifier == I915_FORMAT_MOD_4_TILED_DG2_MC_CCS ||
> +		modifier == I915_FORMAT_MOD_4_TILED_MTL_MC_CCS;
>  }
> 
>  static bool is_gen12_ccs_modifier(uint64_t modifier) @@ -581,7 +585,9 @@ static bool is_gen12_ccs_modifier(uint64_t
> modifier)
>  		modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS ||
>  		modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC ||
>  		modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS ||
> -		modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC;
> +		modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC ||
> +		modifier == I915_FORMAT_MOD_4_TILED_MTL_RC_CCS ||
> +		modifier == I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC;
>  }
> 
>  static bool is_ccs_modifier(uint64_t modifier) @@ -611,8 +617,9 @@ static bool is_gen12_ccs_plane(const struct igt_fb *fb,
> int plane)
> 
>  static bool is_gen12_ccs_cc_plane(const struct igt_fb *fb, int plane)  {
> -	if (fb->modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC &&
> -	    plane == 2)
> +	if (plane == 2 &&
> +	    (fb->modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC ||
> +	     fb->modifier == I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC))
>  		return true;
> 
>  	if (fb->modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC && @@ -706,6 +713,7 @@ static int
> fb_num_planes(const struct igt_fb *fb)
>  		num_planes *= 2;
> 
>  	if (fb->modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC ||
> +	    fb->modifier == I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC ||
>  	    fb->modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC)
>  		num_planes++;
> 
> @@ -903,6 +911,11 @@ static unsigned int get_plane_alignment(struct igt_fb *fb, int color_plane)
> 
>  	alignment = lcm(tile_row_size, 64 * 1024);
> 
> +	if (is_yuv_semiplanar_plane(fb, color_plane) &&
> +	    fb->modifier == I915_FORMAT_MOD_4_TILED_MTL_MC_CCS &&
> +	    (alignment & ((1 << 20) - 1)))
> +		alignment = 1 << 20;
> +
>  	return alignment;
>  }
> 
> @@ -989,6 +1002,9 @@ uint64_t igt_fb_mod_to_tiling(uint64_t modifier)
>  	case I915_FORMAT_MOD_4_TILED_DG2_RC_CCS:
>  	case I915_FORMAT_MOD_4_TILED_DG2_MC_CCS:
>  	case I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC:
> +	case I915_FORMAT_MOD_4_TILED_MTL_RC_CCS:
> +	case I915_FORMAT_MOD_4_TILED_MTL_MC_CCS:
> +	case I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC:
>  		return I915_TILING_4;
>  	case I915_FORMAT_MOD_Yf_TILED:
>  	case I915_FORMAT_MOD_Yf_TILED_CCS:
> @@ -2614,7 +2630,8 @@ igt_fb_create_intel_buf(int fd, struct buf_ops *bops,
>  				 end - fb->offsets[i]);
>  	}
> 
> -	if (fb->modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC)
> +	if (fb->modifier == I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC ||
> +	    fb->modifier == I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC)
>  		buf->cc.offset = fb->offsets[2];
> 
>  	if (fb->modifier == I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC)
> @@ -4656,10 +4673,13 @@ const char *igt_fb_modifier_name(uint64_t modifier)
>  		return "Y-MC_CCS";
>  	case I915_FORMAT_MOD_4_TILED:
>  		return "4";
> +	case I915_FORMAT_MOD_4_TILED_MTL_RC_CCS:
>  	case I915_FORMAT_MOD_4_TILED_DG2_RC_CCS:
>  		return "4-RC_CCS";
> +	case I915_FORMAT_MOD_4_TILED_MTL_MC_CCS:
>  	case I915_FORMAT_MOD_4_TILED_DG2_MC_CCS:
>  		return "4-MC_CCS";
> +	case I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC:
>  	case I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC:
>  		return "4-RC_CCS-CC";
>  	default:
> diff --git a/lib/intel_aux_pgtable.c b/lib/intel_aux_pgtable.c index 946ca60b..7c795213 100644
> --- a/lib/intel_aux_pgtable.c
> +++ b/lib/intel_aux_pgtable.c
> @@ -5,6 +5,7 @@
>  #include "intel_aux_pgtable.h"
>  #include "intel_batchbuffer.h"
>  #include "intel_bufops.h"
> +#include "intel_chipset.h"
>  #include "ioctl_wrappers.h"
> 
>  #include "i915/gem_mman.h"
> @@ -12,22 +13,6 @@
>  #define BITMASK(e, s)		((~0ULL << (s)) & \
>  				 (~0ULL >> (BITS_PER_LONG_LONG - 1 - (e))))
> 
> -/* The unit size to which the AUX CCS surface is aligned to. */
> -#define AUX_CCS_UNIT_SIZE	64
> -/*
> - * The block size on the AUX CCS surface which is mapped by one L1 AUX
> - * pagetable entry.
> - */
> -#define AUX_CCS_BLOCK_SIZE	(4 * AUX_CCS_UNIT_SIZE)
> -/*
> - * The block size on the main surface mapped by one AUX CCS block:
> - *   256 bytes per CCS block *
> - *   8   bits per byte /
> - *   2   bits per main surface CL *
> - *   64  bytes per main surface CL
> - */
> -#define MAIN_SURFACE_BLOCK_SIZE	(AUX_CCS_BLOCK_SIZE * 8 / 2 * 64)
> -
>  #define GFX_ADDRESS_BITS	48
> 
>  #define AUX_FORMAT_YCRCB	0x03
> @@ -357,14 +342,24 @@ pgt_populate_entries_for_buf(struct pgtable *pgt,
>  	uint64_t aux_addr = buf->addr.offset + buf->ccs[surface_idx].offset;
>  	uint64_t l1_flags = pgt_get_l1_flags(buf, surface_idx);
>  	uint64_t lx_flags = pgt_get_lx_flags();
> +	uint64_t aux_ccs_block_size = 1 <<
> +pgt->level_info->desc[0].entry_ptr_shift;
> +
> +	/*
> +	 * The block size on the main surface mapped by one AUX CCS block:
> +	 *       CCS block size *
> +	 *   8   bits per byte /
> +	 *   2   bits per main surface CL *
> +	 *   64  bytes per main surface CL
> +	 */
> +	uint64_t main_surface_block_size = aux_ccs_block_size * 8 / 2 * 64;
> 
>  	igt_assert(!(buf->surface[surface_idx].stride % 512));
>  	igt_assert_eq(buf->ccs[surface_idx].stride,
>  		      buf->surface[surface_idx].stride / 512 * 64);
> 
>  	for (; surface_addr < surface_end;
> -	     surface_addr += MAIN_SURFACE_BLOCK_SIZE,
> -	     aux_addr += AUX_CCS_BLOCK_SIZE) {
> +	     surface_addr += main_surface_block_size,
> +	     aux_addr += aux_ccs_block_size) {
>  		uint64_t table = top_table;
>  		int level;
> 
> @@ -445,7 +440,7 @@ struct intel_buf *
>  intel_aux_pgtable_create(struct intel_bb *ibb,
>  			 struct intel_buf **bufs, int buf_count)  {
> -	static const struct pgtable_level_desc level_desc[] = {
> +	static const struct pgtable_level_desc level_desc_table_tgl[] = {
>  		{
>  			.idx_shift = 16,
>  			.idx_bits = 8,
> @@ -458,6 +453,26 @@ intel_aux_pgtable_create(struct intel_bb *ibb,
>  			.entry_ptr_shift = 13,
>  			.table_size = 32 * 1024,
>  		},
> +		{
> +			.idx_shift = 36,
> +			.idx_bits = 12,
> +			.entry_ptr_shift = 15,
> +			.table_size = 32 * 1024,
> +		}
> +	};
> +	static const struct pgtable_level_desc level_desc_table_mtl[] = {
> +		{
> +			.idx_shift = 20,
> +			.idx_bits = 4,
> +			.entry_ptr_shift = 12,
> +			.table_size = 8 * 1024,
> +		},
> +		{
> +			.idx_shift = 24,
> +			.idx_bits = 12,
> +			.entry_ptr_shift = 11,
> +			.table_size = 32 * 1024,
> +		},
>  		{
>  			.idx_shift = 36,
>  			.idx_bits = 12,
> @@ -465,6 +480,9 @@ intel_aux_pgtable_create(struct intel_bb *ibb,
>  			.table_size = 32 * 1024,
>  		},
>  	};
> +
> +	const struct pgtable_level_desc *level_desc;
> +	uint32_t levels;
>  	struct pgtable *pgt;
>  	struct buf_ops *bops;
>  	struct intel_buf *buf;
> @@ -472,7 +490,15 @@ intel_aux_pgtable_create(struct intel_bb *ibb,
>  	igt_assert(buf_count);
>  	bops = bufs[0]->bops;
> 
> -	pgt = pgt_create(level_desc, ARRAY_SIZE(level_desc), bufs, buf_count);
> +	if (IS_METEORLAKE(ibb->devid)) {
> +		level_desc = level_desc_table_mtl;
> +		levels = ARRAY_SIZE(level_desc_table_mtl);
> +	} else {
> +		level_desc = level_desc_table_tgl;
> +		levels = ARRAY_SIZE(level_desc_table_tgl);
> +	}
> +
> +	pgt = pgt_create(&level_desc[0], levels, bufs, buf_count);
>  	pgt->ibb = ibb;
>  	pgt->buf = intel_buf_create(bops, pgt->size, 1, 8, 0, I915_TILING_NONE,
>  				    I915_COMPRESSION_NONE);
> @@ -637,8 +663,17 @@ gen12_create_aux_pgtable_state(struct intel_bb *ibb,  void  gen12_emit_aux_pgtable_state(struct
> intel_bb *ibb, uint32_t state, bool render)  {
> -	uint32_t table_base_reg = render ? GEN12_GFX_AUX_TABLE_BASE_ADDR :
> -					   GEN12_VEBOX_AUX_TABLE_BASE_ADDR;
> +	uint32_t table_base_reg;
> +
> +	if (render) {
> +		table_base_reg = GEN12_GFX_AUX_TABLE_BASE_ADDR;
> +	} else {
> +		/* Vebox */
> +		if (IS_METEORLAKE(ibb->devid))
> +			table_base_reg = 0x380000 + GEN12_VEBOX_AUX_TABLE_BASE_ADDR;
> +		else
> +			table_base_reg = GEN12_VEBOX_AUX_TABLE_BASE_ADDR;
> +	}
> 
>  	if (!state)
>  		return;
> diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c index 545d1705..9667c694 100644
> --- a/lib/intel_batchbuffer.c
> +++ b/lib/intel_batchbuffer.c
> @@ -671,8 +671,10 @@ igt_render_copyfunc_t igt_get_render_copyfunc(int devid)
>  		copy = gen9_render_copyfunc;
>  	else if (IS_GEN11(devid))
>  		copy = gen11_render_copyfunc;
> -	else if (HAS_4TILE(devid))
> +	else if (HAS_FLATCCS(devid))
>  		copy = gen12p71_render_copyfunc;
> +	else if (IS_METEORLAKE(devid))
> +		copy = mtl_render_copyfunc;
>  	else if (IS_GEN12(devid))
>  		copy = gen12_render_copyfunc;
> 
> @@ -691,7 +693,9 @@ igt_vebox_copyfunc_t igt_get_vebox_copyfunc(int devid)
> 
>  igt_render_clearfunc_t igt_get_render_clearfunc(int devid)  {
> -	if (IS_DG2(devid)) {
> +	if (IS_METEORLAKE(devid)) {
> +		return mtl_render_clearfunc;
> +	} else if (IS_DG2(devid)) {
>  		return gen12p71_render_clearfunc;
>  	} else if (IS_GEN12(devid)) {
>  		return gen12_render_clearfunc;
> @@ -1758,8 +1762,13 @@ __intel_bb_add_intel_buf(struct intel_bb *ibb, struct intel_buf *buf,
>  	if (!alignment) {
>  		alignment = 0x1000;
> 
> +		/*
> +		 * TODO:
> +		 * Find out why MTL need special alignment, spec says 32k
> +		 * is enough for MTL.
> +		 */
>  		if (ibb->gen >= 12 && buf->compression)
> -			alignment = 0x10000;
> +			alignment = IS_METEORLAKE(ibb->devid) ? 0x100000 : 0x10000;
> 
>  		/* For gen3 ensure tiled buffers are aligned to power of two size */
>  		if (ibb->gen == 3 && buf->tiling) {
> diff --git a/lib/rendercopy.h b/lib/rendercopy.h index 480fdee8..0d81d27f 100644
> --- a/lib/rendercopy.h
> +++ b/lib/rendercopy.h
> @@ -23,6 +23,10 @@ static inline void emit_vertex_normalized(struct intel_bb *ibb,
>  	intel_bb_out(ibb, u.ui);
>  }
> 
> +void mtl_render_clearfunc(struct intel_bb *ibb,
> +			  struct intel_buf *dst, unsigned int dst_x, unsigned int dst_y,
> +			  unsigned int width, unsigned int height,
> +			  const float clear_color[4]);
>  void gen12p71_render_clearfunc(struct intel_bb *ibb,
>  			       struct intel_buf *dst, unsigned int dst_x, unsigned int dst_y,
>  			       unsigned int width, unsigned int height, @@ -31,6 +35,10 @@ void gen12_render_clearfunc(struct
> intel_bb *ibb,
>  			    struct intel_buf *dst, unsigned int dst_x, unsigned int dst_y,
>  			    unsigned int width, unsigned int height,
>  			    const float clear_color[4]);
> +void mtl_render_copyfunc(struct intel_bb *ibb,
> +			 struct intel_buf *src, uint32_t src_x, uint32_t src_y,
> +			 uint32_t width, uint32_t height,
> +			 struct intel_buf *dst, uint32_t dst_x, uint32_t dst_y);
>  void gen12p71_render_copyfunc(struct intel_bb *ibb,
>  			      struct intel_buf *src, uint32_t src_x, uint32_t src_y,
>  			      uint32_t width, uint32_t height, diff --git a/lib/rendercopy_gen9.c b/lib/rendercopy_gen9.c index
> 650d0950..db67b5ee 100644
> --- a/lib/rendercopy_gen9.c
> +++ b/lib/rendercopy_gen9.c
> @@ -277,7 +277,9 @@ gen8_bind_buf(struct intel_bb *ibb, const struct intel_buf *buf, int is_dst,
> 
>  			ss->ss12.clear_address = (address + buf->cc.offset) >> 6;
>  			ss->ss13.clear_address_hi = (address + buf->cc.offset) >> 32;
> -		} else if (HAS_FLATCCS(ibb->devid)) {
> +		}
> +
> +		if (HAS_4TILE(ibb->devid)) {
>  			ss->ss7.dg2.memory_compression_type = 0;
>  			ss->ss7.dg2.memory_compression_enable = 0;
>  			ss->ss7.dg2.disable_support_for_multi_gpu_partial_writes = 1; @@ -1245,6 +1247,27 @@ void
> gen12p71_render_copyfunc(struct intel_bb *ibb,
>  			sizeof(gen12p71_render_copy));
>  }
> 
> +void mtl_render_copyfunc(struct intel_bb *ibb,
> +			 struct intel_buf *src,
> +			 unsigned int src_x, unsigned int src_y,
> +			 unsigned int width, unsigned int height,
> +			 struct intel_buf *dst,
> +			 unsigned int dst_x, unsigned int dst_y) {
> +	struct aux_pgtable_info pgtable_info = { };
> +
> +	gen12_aux_pgtable_init(&pgtable_info, ibb, src, dst);
> +
> +	_gen9_render_op(ibb, src, src_x, src_y,
> +			width, height, dst, dst_x, dst_y,
> +			pgtable_info.pgtable_buf,
> +			NULL,
> +			gen12p71_render_copy,
> +			sizeof(gen12p71_render_copy));
> +
> +	gen12_aux_pgtable_cleanup(ibb, &pgtable_info); }
> +
>  void gen12_render_clearfunc(struct intel_bb *ibb,
>  			    struct intel_buf *dst,
>  			    unsigned int dst_x, unsigned int dst_y, @@ -1277,3 +1300,22 @@ void
> gen12p71_render_clearfunc(struct intel_bb *ibb,
>  			gen12p71_render_copy,
>  			sizeof(gen12p71_render_copy));
>  }
> +
> +void mtl_render_clearfunc(struct intel_bb *ibb,
> +			  struct intel_buf *dst,
> +			  unsigned int dst_x, unsigned int dst_y,
> +			  unsigned int width, unsigned int height,
> +			  const float clear_color[4])
> +{
> +	struct aux_pgtable_info pgtable_info = { };
> +
> +	gen12_aux_pgtable_init(&pgtable_info, ibb, NULL, dst);
> +
> +	_gen9_render_op(ibb, NULL, 0, 0,
> +			width, height, dst, dst_x, dst_y,
> +			pgtable_info.pgtable_buf,
> +			clear_color,
> +			gen12p71_render_copy,
> +			sizeof(gen12p71_render_copy));
> +	gen12_aux_pgtable_cleanup(ibb, &pgtable_info); }
> diff --git a/lib/veboxcopy_gen12.c b/lib/veboxcopy_gen12.c index aa90939b..4ab6ced3 100644
> --- a/lib/veboxcopy_gen12.c
> +++ b/lib/veboxcopy_gen12.c
> @@ -158,13 +158,36 @@ static bool format_is_interleaved_yuv(int format)
>  	return false;
>  }
> 
> +static uint32_t compression_format(int format, struct intel_buf *buf) {
> +	if (buf->compression == I915_COMPRESSION_NONE)
> +		return 0;
> +
> +	switch (format) {
> +	case R8G8B8A8_UNORM:
> +		return 0xa;
> +	case PLANAR_420_8:
> +		return 0xf;
> +	case PLANAR_420_16:
> +		return 8;
> +	case YCRCB_NORMAL:
> +		return 3;
> +	case PACKED_444A_8:
> +		return 9;
> +	default:
> +		igt_assert(0);
> +	}
> +}
> +
>  static void emit_surface_state_cmd(struct intel_bb *ibb,
>  				   int surface_id,
> -				   int width, int height, int bpp,
> -				   int pitch, uint32_t tiling, int format,
> -				   uint32_t uv_offset)
> +				   int width, int height,
> +				   struct intel_buf *buf, int format)
>  {
>  	struct vebox_surface_state *ss;
> +	int pitch = buf->surface[0].stride;
> +	uint32_t uv_offset = buf->surface[1].offset;
> +	uint32_t tiling = buf->tiling;
> 
>  	ss = intel_bb_ptr_align(ibb, 4);
> 
> @@ -185,35 +208,16 @@ static void emit_surface_state_cmd(struct intel_bb *ibb,
> 
>  	ss->ss4.u_y_offset = uv_offset / pitch;
> 
> -	if (HAS_FLATCCS(ibb->devid)) {
> +	if (HAS_4TILE(ibb->devid)) {
>  		/*
> -		 * f-tile = 3 (Tile F)
> +		 * tile4 = 3
>  		 */
>  		ss->ss3.dg2.tile_mode = (tiling != I915_TILING_NONE) ? 3 : 0;
> 
> -		switch (format) {
> -		case R8G8B8A8_UNORM:
> -			ss->ss7.dg2.compression_format = 0xa;
> -			break;
> -		case PLANAR_420_8:
> -			ss->ss7.dg2.compression_format = 0xf;
> -			break;
> -		case PLANAR_420_16:
> -			ss->ss7.dg2.compression_format = 8;
> -			break;
> -		case YCRCB_NORMAL:
> -			ss->ss7.dg2.compression_format = 3;
> -			break;
> -		case PACKED_444A_8:
> -			ss->ss7.dg2.compression_format = 0x9;
> -			break;
> -		default:
> -			igt_assert(0);
> -		}
> +		ss->ss7.dg2.compression_format = compression_format(format, buf);
>  	} else {
>  		ss->ss3.tgl.tile_walk = (tiling == I915_TILING_Y) ||
> -			(tiling == I915_TILING_Yf) ||
> -			(tiling == I915_TILING_4);
> +			(tiling == I915_TILING_Yf);
>  		ss->ss3.tgl.tiled_surface = tiling != I915_TILING_NONE;
>  	}
> 
> @@ -246,9 +250,10 @@ static void emit_tiling_convert_cmd(struct intel_bb *ibb,
>  	}
> 
>  	if (HAS_4TILE(ibb->devid))
> -		tc->tc1_2.input_mocs_idx = 3;
> -	else
> -		tc->tc1_2.input_tiled_resource_mode = src->tiling == I915_TILING_Yf;
> +		tc->tc1_2.input_mocs_idx = IS_DG2(ibb->devid) ? 3 : 9;
> +
> +	tc->tc1_2.input_tiled_resource_mode = src->tiling == I915_TILING_Yf;
> +
>  	reloc_delta = tc->tc1_2_l;
> 
>  	igt_assert(src->addr.offset == ALIGN(src->addr.offset, 0x1000)); @@ -267,9 +272,9 @@ static void
> emit_tiling_convert_cmd(struct intel_bb *ibb,
>  	}
> 
>  	if (HAS_4TILE(ibb->devid))
> -		tc->tc3_4.output_mocs_idx = 3;
> -	else
> -		tc->tc3_4.output_tiled_resource_mode = dst->tiling == I915_TILING_Yf;
> +		tc->tc3_4.output_mocs_idx = IS_DG2(ibb->devid) ? 3 : 9;
> +
> +	tc->tc3_4.output_tiled_resource_mode = dst->tiling == I915_TILING_Yf;
> 
>  	reloc_delta = tc->tc3_4_l;
> 
> @@ -344,14 +349,12 @@ void gen12_vebox_copyfunc(struct intel_bb *ibb,
>  	igt_assert(!src->format_is_yuv_semiplanar ||
>  		   (src->surface[1].offset && dst->surface[1].offset));
>  	emit_surface_state_cmd(ibb, VEBOX_SURFACE_INPUT,
> -			       width, height, src->bpp,
> -			       src->surface[0].stride,
> -			       src->tiling, format, src->surface[1].offset);
> +			       width, height,
> +			       src, format);
> 
>  	emit_surface_state_cmd(ibb, VEBOX_SURFACE_OUTPUT,
> -			       width, height, dst->bpp,
> -			       dst->surface[0].stride,
> -			       dst->tiling, format, dst->surface[1].offset);
> +			       width, height,
> +			       dst, format);
> 
>  	emit_tiling_convert_cmd(ibb, src, dst);
> 
> --
> 2.25.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2023-05-23  9:12 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-16 15:43 [igt-dev] [PATCH i-g-t 0/4] Add Meteorlake CCS support Juha-Pekka Heikkila
2023-05-16 15:43 ` [igt-dev] [PATCH i-g-t 1/4] drm/fourcc: Import drm_fourcc header from commit c7c12de893f8 ("drm/fourcc: define Intel Meteorlake related ccs modifiers") Juha-Pekka Heikkila
2023-05-22 12:07   ` Kahola, Mika
2023-05-16 15:43 ` [igt-dev] [PATCH i-g-t 2/4] lib/mtl: Add MTL related tile4 ccs modifiers handling Juha-Pekka Heikkila
2023-05-23  9:12   ` Kahola, Mika
2023-05-16 15:43 ` [igt-dev] [PATCH i-g-t 3/4] tests/i915/kms_ccs: enable mtl aux ccs tests Juha-Pekka Heikkila
2023-05-22 12:54   ` Kahola, Mika
2023-05-16 15:43 ` [igt-dev] [PATCH i-g-t 4/4] tests/kms_getfb: Add meteorlake related ccs modifiers Juha-Pekka Heikkila
2023-05-22 12:56   ` Kahola, Mika
2023-05-16 17:14 ` [igt-dev] ✓ Fi.CI.BAT: success for Add Meteorlake CCS support Patchwork
2023-05-17  1:12 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox