All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t v3 0/8] Update gem_blits for newer generations
@ 2023-03-14 14:44 Karolina Stolarek
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 1/8] lib/i915_blt: Add helpers to check XY_SRC_COPY support Karolina Stolarek
                   ` (9 more replies)
  0 siblings, 10 replies; 20+ messages in thread
From: Karolina Stolarek @ 2023-03-14 14:44 UTC (permalink / raw)
  To: igt-dev

gem_blits test utilizes XY_SRC_COPY_BLT, a legacy blitter command
that is not available on newer generations such as MTL. To make
sure the test covers such platforms, update it to switch to
XY_FAST_COPY_BLT for blit copy operations.

In addition to this change, the series:
  1) Adds helpers to i915_blt library that check support for
     XY_SRC_COPY_BLT command and its capabilities
  2) Updates the definitions of older platforms to properly list
     all available commands and tilings
  3) Updates gem_blits to use aforementioned helpers to detect
     tiling formats supported by the platform

v3:
  - Rebase the changes, as they stopped applying cleanly
  - Add static asserts on tiling enums, to make sure that changing
    defines or blt_tiling_type results in a compiler error
  - Reorder T_YFMAJOR value to it directly follows Tile4. Thanks to
    __block_tiling() and __fast_tiling() switches, this change
    shouldn't break gem_ccs/gem_exercise_blt tests

v2:
  - Remove libdrm include in "tests/i915/gem_blits: Add XY_FAST_COPY_BLT
    support for gem_blits". It's not needed and causes compile errors
    on some targets

Arjun Melkaveri (2):
  tests/i915/gem_blits: Use new copy instruction
  tests/i915/gem_blits: Add XY_FAST_COPY_BLT support for gem_blits

Karolina Stolarek (5):
  lib/i915_blt: Add helpers to check XY_SRC_COPY support
  lib/intel_cmds_info: Correct tiling formats for XY_SRC_COPY
  lib/intel_device_info: Add tiling information for early gens
  lib/intel_cmds_info: Reorder blt_tiling_type enum
  tests/gem_blits: Use intel_cmds_info library

Vikas Srivastava (1):
  lib/intel_batchbuffer: Add wrapper API to use
    XY_FAST_COPY_BLT/XY_SRC_BLT

 lib/i915/i915_blt.c        |  39 ++++++++++
 lib/i915/i915_blt.h        |   2 +
 lib/i915/intel_cmds_info.c |  24 ++++--
 lib/i915/intel_cmds_info.h |   5 +-
 lib/intel_batchbuffer.c    |  82 +++++++++++++++++--
 lib/intel_batchbuffer.h    |  28 +++++++
 lib/intel_device_info.c    |  29 +++++--
 tests/i915/gem_blits.c     | 156 ++++++++++++++++++++++++-------------
 8 files changed, 289 insertions(+), 76 deletions(-)

-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t v3 1/8] lib/i915_blt: Add helpers to check XY_SRC_COPY support
  2023-03-14 14:44 [igt-dev] [PATCH i-g-t v3 0/8] Update gem_blits for newer generations Karolina Stolarek
@ 2023-03-14 14:44 ` Karolina Stolarek
  2023-03-15  8:32   ` Zbigniew Kempczyński
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 2/8] lib/intel_cmds_info: Correct tiling formats for XY_SRC_COPY Karolina Stolarek
                   ` (8 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Karolina Stolarek @ 2023-03-14 14:44 UTC (permalink / raw)
  To: igt-dev

Add predicates that check if the command with a specific
tiling format is supported on the current platform.

Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
Cc: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
---
 lib/i915/i915_blt.c | 33 +++++++++++++++++++++++++++++++++
 lib/i915/i915_blt.h |  2 ++
 2 files changed, 35 insertions(+)

diff --git a/lib/i915/i915_blt.c b/lib/i915/i915_blt.c
index 63eba4ac..13105820 100644
--- a/lib/i915/i915_blt.c
+++ b/lib/i915/i915_blt.c
@@ -295,6 +295,22 @@ bool blt_has_fast_copy(int i915)
 	return blt_supports_command(cmds_info, XY_FAST_COPY);
 }
 
+/**
+ * blt_has_xy_src_copy
+ * @i915: drm fd
+ *
+ * Check if XY src copy is supported by @i915 device
+ *
+ * Returns:
+ * true if it does, false otherwise.
+ */
+bool blt_has_xy_src_copy(int i915)
+{
+	const struct intel_cmds_info *cmds_info = GET_CMDS_INFO(i915);
+
+	return blt_supports_command(cmds_info, XY_SRC_COPY);
+}
+
 /**
  * blt_fast_copy_supports_tiling
  * @i915: drm fd
@@ -329,6 +345,23 @@ bool blt_block_copy_supports_tiling(int i915, enum blt_tiling_type tiling)
 	return blt_cmd_supports_tiling(cmds_info, XY_BLOCK_COPY, tiling);
 }
 
+/**
+ * blt_xy_src_copy_supports_tiling
+ * @i915: drm fd
+ * @tiling: tiling format
+ *
+ * Check if XY src copy provided by @i915 device supports @tiling format
+ *
+ * Returns:
+ * true if it does, false otherwise.
+ */
+bool blt_xy_src_copy_supports_tiling(int i915, enum blt_tiling_type tiling)
+{
+	const struct intel_cmds_info *cmds_info = GET_CMDS_INFO(i915);
+
+	return blt_cmd_supports_tiling(cmds_info, XY_SRC_COPY, tiling);
+}
+
 /**
  * blt_block_copy_supports_compression
  * @i915: drm fd
diff --git a/lib/i915/i915_blt.h b/lib/i915/i915_blt.h
index 63951db7..a5f0edd1 100644
--- a/lib/i915/i915_blt.h
+++ b/lib/i915/i915_blt.h
@@ -168,9 +168,11 @@ bool blt_cmd_has_property(const struct intel_cmds_info *cmds_info,
 
 bool blt_has_block_copy(int i915);
 bool blt_has_fast_copy(int i915);
+bool blt_has_xy_src_copy(int i915);
 
 bool blt_fast_copy_supports_tiling(int i915, enum blt_tiling_type tiling);
 bool blt_block_copy_supports_tiling(int i915, enum blt_tiling_type tiling);
+bool blt_xy_src_copy_supports_tiling(int i915, enum blt_tiling_type tiling);
 bool blt_block_copy_supports_compression(int i915);
 bool blt_uses_extended_block_copy(int i915);
 
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t v3 2/8] lib/intel_cmds_info: Correct tiling formats for XY_SRC_COPY
  2023-03-14 14:44 [igt-dev] [PATCH i-g-t v3 0/8] Update gem_blits for newer generations Karolina Stolarek
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 1/8] lib/i915_blt: Add helpers to check XY_SRC_COPY support Karolina Stolarek
@ 2023-03-14 14:44 ` Karolina Stolarek
  2023-03-15 10:11   ` Zbigniew Kempczyński
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 3/8] lib/intel_device_info: Add tiling information for early gens Karolina Stolarek
                   ` (7 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Karolina Stolarek @ 2023-03-14 14:44 UTC (permalink / raw)
  To: igt-dev

Both TileX and TileY are supported since SNB. Update definitions
for pre-SNB and pre-BDW platforms.

Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
Cc: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
---
 lib/i915/intel_cmds_info.c | 24 ++++++++++++++++--------
 lib/i915/intel_cmds_info.h |  3 ++-
 lib/intel_device_info.c    | 12 ++++++------
 3 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/lib/i915/intel_cmds_info.c b/lib/i915/intel_cmds_info.c
index 2ac6bc2a..08fc981a 100644
--- a/lib/i915/intel_cmds_info.c
+++ b/lib/i915/intel_cmds_info.c
@@ -22,11 +22,11 @@
 
 static const struct blt_cmd_info src_copy = BLT_INFO(SRC_COPY, BIT(T_LINEAR));
 static const struct blt_cmd_info
-		pre_gen8_xy_src_copy = BLT_INFO(XY_SRC_COPY,
+		pre_gen6_xy_src_copy = BLT_INFO(XY_SRC_COPY,
 						BIT(T_LINEAR) |
 						BIT(T_XMAJOR));
 static const struct blt_cmd_info
-		gen8_xy_src_copy = BLT_INFO(XY_SRC_COPY,
+		gen6_xy_src_copy = BLT_INFO(XY_SRC_COPY,
 					    BIT(T_LINEAR) |
 					    BIT(T_XMAJOR) |
 					    BIT(T_YMAJOR));
@@ -69,29 +69,37 @@ static const struct blt_cmd_info
 						 BIT(T_TILE64),
 						 BLT_CMD_EXTENDED);
 
-const struct intel_cmds_info pre_gen8_cmds_info = {
+const struct intel_cmds_info pre_gen6_cmds_info = {
 	.blt_cmds = {
 		[SRC_COPY] = &src_copy,
-		[XY_SRC_COPY] = &pre_gen8_xy_src_copy
+		[XY_SRC_COPY] = &pre_gen6_xy_src_copy
 	}
 };
 
+const struct intel_cmds_info gen6_cmds_info =  {
+	.blt_cmds = {
+		[SRC_COPY] = &src_copy,
+		[XY_SRC_COPY] = &gen6_xy_src_copy
+	}
+
+};
+
 const struct intel_cmds_info gen8_cmds_info = {
 	.blt_cmds = {
-		[XY_SRC_COPY] = &gen8_xy_src_copy,
+		[XY_SRC_COPY] = &gen6_xy_src_copy,
 	}
 };
 
 const struct intel_cmds_info gen11_cmds_info = {
 	.blt_cmds = {
-		[XY_SRC_COPY] = &gen8_xy_src_copy,
+		[XY_SRC_COPY] = &gen6_xy_src_copy,
 		[XY_FAST_COPY] = &gen11_xy_fast_copy,
 	}
 };
 
 const struct intel_cmds_info gen12_cmds_info = {
 	.blt_cmds = {
-		[XY_SRC_COPY] = &gen8_xy_src_copy,
+		[XY_SRC_COPY] = &gen6_xy_src_copy,
 		[XY_FAST_COPY] = &gen12_xy_fast_copy,
 		[XY_BLOCK_COPY] = &gen12_xy_block_copy,
 	}
@@ -99,7 +107,7 @@ const struct intel_cmds_info gen12_cmds_info = {
 
 const struct intel_cmds_info gen12_dg2_cmds_info = {
 	.blt_cmds = {
-		[XY_SRC_COPY] = &gen8_xy_src_copy,
+		[XY_SRC_COPY] = &gen6_xy_src_copy,
 		[XY_FAST_COPY] = &dg2_xy_fast_copy,
 		[XY_BLOCK_COPY] = &dg2_xy_block_copy,
 	}
diff --git a/lib/i915/intel_cmds_info.h b/lib/i915/intel_cmds_info.h
index 9bf6ecd5..57e34c4b 100644
--- a/lib/i915/intel_cmds_info.h
+++ b/lib/i915/intel_cmds_info.h
@@ -39,7 +39,8 @@ struct intel_cmds_info {
 	struct blt_cmd_info const *blt_cmds[__BLT_MAX_CMD];
 };
 
-extern const struct intel_cmds_info pre_gen8_cmds_info;
+extern const struct intel_cmds_info pre_gen6_cmds_info;
+extern const struct intel_cmds_info gen6_cmds_info;
 extern const struct intel_cmds_info gen8_cmds_info;
 extern const struct intel_cmds_info gen11_cmds_info;
 extern const struct intel_cmds_info gen12_cmds_info;
diff --git a/lib/intel_device_info.c b/lib/intel_device_info.c
index 12b81d48..0baad721 100644
--- a/lib/intel_device_info.c
+++ b/lib/intel_device_info.c
@@ -145,7 +145,7 @@ static const struct intel_device_info intel_sandybridge_info = {
 	.graphics_ver = 6,
 	.display_ver = 6,
 	.is_sandybridge = true,
-	.cmds_info = &pre_gen8_cmds_info,
+	.cmds_info = &gen6_cmds_info,
 	.codename = "sandybridge"
 };
 static const struct intel_device_info intel_sandybridge_m_info = {
@@ -153,7 +153,7 @@ static const struct intel_device_info intel_sandybridge_m_info = {
 	.display_ver = 6,
 	.is_mobile = true,
 	.is_sandybridge = true,
-	.cmds_info = &pre_gen8_cmds_info,
+	.cmds_info = &gen6_cmds_info,
 	.codename = "sandybridge"
 };
 
@@ -161,7 +161,7 @@ static const struct intel_device_info intel_ivybridge_info = {
 	.graphics_ver = 7,
 	.display_ver = 7,
 	.is_ivybridge = true,
-	.cmds_info = &pre_gen8_cmds_info,
+	.cmds_info = &gen6_cmds_info,
 	.codename = "ivybridge"
 };
 static const struct intel_device_info intel_ivybridge_m_info = {
@@ -169,7 +169,7 @@ static const struct intel_device_info intel_ivybridge_m_info = {
 	.display_ver = 7,
 	.is_mobile = true,
 	.is_ivybridge = true,
-	.cmds_info = &pre_gen8_cmds_info,
+	.cmds_info = &gen6_cmds_info,
 	.codename = "ivybridge"
 };
 
@@ -177,7 +177,7 @@ static const struct intel_device_info intel_valleyview_info = {
 	.graphics_ver = 7,
 	.display_ver = 7,
 	.is_valleyview = true,
-	.cmds_info = &pre_gen8_cmds_info,
+	.cmds_info = &gen6_cmds_info,
 	.codename = "valleyview"
 };
 
@@ -185,7 +185,7 @@ static const struct intel_device_info intel_valleyview_info = {
 	.graphics_ver = 7, \
 	.display_ver = 7, \
 	.is_haswell = true, \
-	.cmds_info = &pre_gen8_cmds_info, \
+	.cmds_info = &gen6_cmds_info, \
 	.codename = "haswell"
 
 static const struct intel_device_info intel_haswell_gt1_info = {
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t v3 3/8] lib/intel_device_info: Add tiling information for early gens
  2023-03-14 14:44 [igt-dev] [PATCH i-g-t v3 0/8] Update gem_blits for newer generations Karolina Stolarek
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 1/8] lib/i915_blt: Add helpers to check XY_SRC_COPY support Karolina Stolarek
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 2/8] lib/intel_cmds_info: Correct tiling formats for XY_SRC_COPY Karolina Stolarek
@ 2023-03-14 14:44 ` Karolina Stolarek
  2023-03-15 10:36   ` Zbigniew Kempczyński
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 4/8] tests/i915/gem_blits: Use new copy instruction Karolina Stolarek
                   ` (6 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Karolina Stolarek @ 2023-03-14 14:44 UTC (permalink / raw)
  To: igt-dev

Update relevant intel_device_info entries to store information
on supported tiling formats.

Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
Cc: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
---
 lib/intel_device_info.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/lib/intel_device_info.c b/lib/intel_device_info.c
index 0baad721..bda4fb63 100644
--- a/lib/intel_device_info.c
+++ b/lib/intel_device_info.c
@@ -27,12 +27,14 @@ static const struct intel_device_info intel_i830_info = {
 	.graphics_ver = 2,
 	.display_ver = 2,
 	.is_almador = true,
+	.cmds_info = &pre_gen6_cmds_info,
 	.codename = "almador"
 };
 static const struct intel_device_info intel_i845_info = {
 	.graphics_ver = 2,
 	.display_ver = 2,
 	.is_brookdale = true,
+	.cmds_info = &pre_gen6_cmds_info,
 	.codename = "brookdale"
 };
 static const struct intel_device_info intel_i855_info = {
@@ -40,12 +42,14 @@ static const struct intel_device_info intel_i855_info = {
 	.display_ver = 2,
 	.is_mobile = true,
 	.is_montara = true,
+	.cmds_info = &pre_gen6_cmds_info,
 	.codename = "montara"
 };
 static const struct intel_device_info intel_i865_info = {
 	.graphics_ver = 2,
 	.display_ver = 2,
 	.is_springdale = true,
+	.cmds_info = &pre_gen6_cmds_info,
 	.codename = "spingdale"
 };
 
@@ -53,6 +57,7 @@ static const struct intel_device_info intel_i915_info = {
 	.graphics_ver = 3,
 	.display_ver = 3,
 	.is_grantsdale = true,
+	.cmds_info = &pre_gen6_cmds_info,
 	.codename = "grantsdale"
 };
 static const struct intel_device_info intel_i915m_info = {
@@ -60,12 +65,14 @@ static const struct intel_device_info intel_i915m_info = {
 	.display_ver = 3,
 	.is_mobile = true,
 	.is_alviso = true,
+	.cmds_info = &pre_gen6_cmds_info,
 	.codename = "alviso"
 };
 static const struct intel_device_info intel_i945_info = {
 	.graphics_ver = 3,
 	.display_ver = 3,
 	.is_lakeport = true,
+	.cmds_info = &pre_gen6_cmds_info,
 	.codename = "lakeport"
 };
 static const struct intel_device_info intel_i945m_info = {
@@ -73,6 +80,7 @@ static const struct intel_device_info intel_i945m_info = {
 	.display_ver = 3,
 	.is_mobile = true,
 	.is_calistoga = true,
+	.cmds_info = &pre_gen6_cmds_info,
 	.codename = "calistoga"
 };
 
@@ -80,6 +88,7 @@ static const struct intel_device_info intel_g33_info = {
 	.graphics_ver = 3,
 	.display_ver = 3,
 	.is_bearlake = true,
+	.cmds_info = &pre_gen6_cmds_info,
 	.codename = "bearlake"
 };
 
@@ -87,6 +96,7 @@ static const struct intel_device_info intel_pineview_g_info = {
 	.graphics_ver = 3,
 	.display_ver = 3,
 	.is_pineview = true,
+	.cmds_info = &pre_gen6_cmds_info,
 	.codename = "pineview"
 };
 
@@ -95,6 +105,7 @@ static const struct intel_device_info intel_pineview_m_info = {
 	.display_ver = 3,
 	.is_mobile = true,
 	.is_pineview = true,
+	.cmds_info = &pre_gen6_cmds_info,
 	.codename = "pineview"
 };
 
@@ -102,6 +113,7 @@ static const struct intel_device_info intel_i965_info = {
 	.graphics_ver = 4,
 	.display_ver = 4,
 	.is_broadwater = true,
+	.cmds_info = &pre_gen6_cmds_info,
 	.codename = "broadwater"
 };
 
@@ -110,6 +122,7 @@ static const struct intel_device_info intel_i965m_info = {
 	.display_ver = 4,
 	.is_mobile = true,
 	.is_crestline = true,
+	.cmds_info = &pre_gen6_cmds_info,
 	.codename = "crestline"
 };
 
@@ -117,6 +130,7 @@ static const struct intel_device_info intel_g45_info = {
 	.graphics_ver = 4,
 	.display_ver = 4,
 	.is_eaglelake = true,
+	.cmds_info = &pre_gen6_cmds_info,
 	.codename = "eaglelake"
 };
 static const struct intel_device_info intel_gm45_info = {
@@ -124,6 +138,7 @@ static const struct intel_device_info intel_gm45_info = {
 	.display_ver = 4,
 	.is_mobile = true,
 	.is_cantiga = true,
+	.cmds_info = &pre_gen6_cmds_info,
 	.codename = "cantiga"
 };
 
@@ -131,6 +146,7 @@ static const struct intel_device_info intel_ironlake_info = {
 	.graphics_ver = 5,
 	.display_ver = 5,
 	.is_ironlake = true,
+	.cmds_info = &pre_gen6_cmds_info,
 	.codename = "ironlake" /* clarkdale? */
 };
 static const struct intel_device_info intel_ironlake_m_info = {
@@ -138,6 +154,7 @@ static const struct intel_device_info intel_ironlake_m_info = {
 	.display_ver = 5,
 	.is_mobile = true,
 	.is_arrandale = true,
+	.cmds_info = &pre_gen6_cmds_info,
 	.codename = "arrandale"
 };
 
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t v3 4/8] tests/i915/gem_blits: Use new copy instruction
  2023-03-14 14:44 [igt-dev] [PATCH i-g-t v3 0/8] Update gem_blits for newer generations Karolina Stolarek
                   ` (2 preceding siblings ...)
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 3/8] lib/intel_device_info: Add tiling information for early gens Karolina Stolarek
@ 2023-03-14 14:44 ` Karolina Stolarek
  2023-03-15 10:42   ` Zbigniew Kempczyński
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 5/8] lib/intel_batchbuffer: Add wrapper API to use XY_FAST_COPY_BLT/XY_SRC_BLT Karolina Stolarek
                   ` (5 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Karolina Stolarek @ 2023-03-14 14:44 UTC (permalink / raw)
  To: igt-dev; +Cc: Fei Yang, Arjun Melkaveri, Nirmoy Das

From: Arjun Melkaveri <arjun.melkaveri@intel.com>

The test uses legacy command which is not supported on
newer GPU generations. Use XY_FAST_COPY_BLT on newer GPU generations.

Signed-off-by: Arjun Melkaveri <arjun.melkaveri@intel.com>
Co-developed-by: Nirmoy Das <nirmoy.das@intel.com>
Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
Signed-off-by: Fei Yang <fei.yang@intel.com>
Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
Cc: Andi Shyti <andi.shyti@linux.intel.com>
---
 lib/intel_batchbuffer.c | 10 ++---
 lib/intel_batchbuffer.h |  6 +++
 tests/i915/gem_blits.c  | 87 +++++++++++++++++++++++++----------------
 3 files changed, 64 insertions(+), 39 deletions(-)

diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
index 7bb24c8f..a2bf5d2e 100644
--- a/lib/intel_batchbuffer.c
+++ b/lib/intel_batchbuffer.c
@@ -92,8 +92,8 @@ static uint32_t fast_copy_pitch(unsigned int stride, unsigned int tiling)
 		return stride;
 }
 
-static uint32_t fast_copy_dword0(unsigned int src_tiling,
-				 unsigned int dst_tiling)
+uint32_t fast_copy_dword0(unsigned int src_tiling,
+			  unsigned int dst_tiling)
 {
 	uint32_t dword0 = 0;
 
@@ -136,9 +136,9 @@ static uint32_t fast_copy_dword0(unsigned int src_tiling,
 	return dword0;
 }
 
-static uint32_t fast_copy_dword1(unsigned int src_tiling,
-				 unsigned int dst_tiling,
-				 int bpp)
+uint32_t fast_copy_dword1(unsigned int src_tiling,
+			  unsigned int dst_tiling,
+			  int bpp)
 {
 	uint32_t dword1 = 0;
 
diff --git a/lib/intel_batchbuffer.h b/lib/intel_batchbuffer.h
index 37db0ffa..81830d77 100644
--- a/lib/intel_batchbuffer.h
+++ b/lib/intel_batchbuffer.h
@@ -31,6 +31,12 @@ enum i915_compression {
 	I915_COMPRESSION_MEDIA,
 };
 
+uint32_t fast_copy_dword0(unsigned int src_tiling,
+			  unsigned int dst_tiling);
+uint32_t fast_copy_dword1(unsigned int src_tiling,
+			  unsigned int dst_tiling,
+			  int bpp);
+
 void igt_blitter_src_copy(int fd,
 			  uint64_t ahnd,
 			  uint32_t ctx,
diff --git a/tests/i915/gem_blits.c b/tests/i915/gem_blits.c
index 9ea3925c..e5ef3662 100644
--- a/tests/i915/gem_blits.c
+++ b/tests/i915/gem_blits.c
@@ -22,15 +22,19 @@
  *
  */
 
+#include "intel_batchbuffer.h"
 #include "i915/gem.h"
 #include "i915/gem_create.h"
 #include "igt.h"
 #include "igt_x86.h"
+#include "i915/i915_blt.h"
 
 #define BCS_SWCTRL 0x22200
 #define BCS_SRC_Y (1 << 0)
 #define BCS_DST_Y (1 << 1)
 
+static uint32_t devid;
+
 struct device {
 	int fd;
 	int gen;
@@ -145,8 +149,7 @@ static void buffer_set_tiling(const struct device *device,
 	struct drm_i915_gem_relocation_entry reloc[2];
 	struct drm_i915_gem_execbuffer2 execbuf;
 	const bool has_64b_reloc = device->gen >= 8;
-	uint32_t stride, size, pitch;
-	uint32_t *batch;
+	uint32_t stride, size, pitch, *batch, dword1;
 	int i;
 
 	if (buffer->tiling == tiling)
@@ -207,19 +210,25 @@ static void buffer_set_tiling(const struct device *device,
 		batch[i++] = mask;
 	}
 
-	batch[i] = (XY_SRC_COPY_BLT_CMD |
-		    XY_SRC_COPY_BLT_WRITE_ALPHA |
-		    XY_SRC_COPY_BLT_WRITE_RGB);
-	if (device->gen >= 4 && buffer->tiling)
-		batch[i] |= XY_SRC_COPY_BLT_SRC_TILED;
-	if (device->gen >= 4 && tiling)
-		batch[i] |= XY_SRC_COPY_BLT_DST_TILED;
-	batch[i++] |= 6 + 2 * has_64b_reloc;
-
 	pitch = stride;
 	if (device->gen >= 4 && tiling)
 		pitch /= 4;
-	batch[i++] = 3 << 24 | 0xcc << 16 | pitch;
+
+	if (!blt_has_xy_src_copy(device->fd)) {
+		batch[i++] = fast_copy_dword0(buffer->tiling, tiling);
+		dword1 = fast_copy_dword1(buffer->tiling, tiling, 32);
+		batch[i++] = dword1 | pitch;
+	} else {
+		batch[i] = (XY_SRC_COPY_BLT_CMD |
+			    XY_SRC_COPY_BLT_WRITE_ALPHA |
+			    XY_SRC_COPY_BLT_WRITE_RGB);
+		if (device->gen >= 4 && buffer->tiling)
+			batch[i] |= XY_SRC_COPY_BLT_SRC_TILED;
+		if (device->gen >= 4 && tiling)
+			batch[i] |= XY_SRC_COPY_BLT_DST_TILED;
+		batch[i++] |= 6 + 2 * has_64b_reloc;
+		batch[i++] = 3 << 24 | 0xcc << 16 | pitch;
+	}
 	batch[i++] = 0;
 	batch[i++] = buffer->height << 16 | buffer->width;
 	reloc[0].target_handle = obj[0].handle;
@@ -296,8 +305,7 @@ static bool blit_to_linear(const struct device *device,
 	struct drm_i915_gem_relocation_entry reloc[2];
 	struct drm_i915_gem_execbuffer2 execbuf;
 	const bool has_64b_reloc = device->gen >= 8;
-	uint32_t *batch;
-	uint32_t pitch;
+	uint32_t *batch, pitch, dword1;
 	int i = 0;
 
 	igt_assert(buffer->tiling);
@@ -352,14 +360,19 @@ static bool blit_to_linear(const struct device *device,
 		batch[i++] = mask;
 	}
 
-	batch[i] = (XY_SRC_COPY_BLT_CMD |
-		    XY_SRC_COPY_BLT_WRITE_ALPHA |
-		    XY_SRC_COPY_BLT_WRITE_RGB);
-	if (device->gen >= 4 && buffer->tiling)
-		batch[i] |= XY_SRC_COPY_BLT_SRC_TILED;
-	batch[i++] |= 6 + 2 * has_64b_reloc;
-
-	batch[i++] = 3 << 24 | 0xcc << 16 | buffer->stride;
+	if (!blt_has_xy_src_copy(device->fd)) {
+		batch[i++] = fast_copy_dword0(buffer->tiling, I915_TILING_NONE);
+		dword1 = fast_copy_dword1(buffer->tiling, I915_TILING_NONE, 32);
+		batch[i++] = dword1 | buffer->stride;
+	} else {
+		batch[i] = (XY_SRC_COPY_BLT_CMD |
+			    XY_SRC_COPY_BLT_WRITE_ALPHA |
+			    XY_SRC_COPY_BLT_WRITE_RGB);
+		if (device->gen >= 4 && buffer->tiling)
+			batch[i] |= XY_SRC_COPY_BLT_SRC_TILED;
+		batch[i++] |= 6 + 2 * has_64b_reloc;
+		batch[i++] = 3 << 24 | 0xcc << 16 | buffer->stride;
+	}
 	batch[i++] = 0;
 	batch[i++] = buffer->height << 16 | buffer->width;
 	reloc[0].target_handle = obj[0].handle;
@@ -598,8 +611,7 @@ blit(const struct device *device,
 	struct drm_i915_gem_relocation_entry reloc[2];
 	struct drm_i915_gem_execbuffer2 execbuf;
 	const bool has_64b_reloc = device->gen >= 8;
-	uint32_t *batch;
-	uint32_t pitch;
+	uint32_t *batch, dword1, pitch;
 	int i = 0;
 
 	if (src_x < 0) {
@@ -687,20 +699,25 @@ blit(const struct device *device,
 		batch[i++] = mask;
 	}
 
-	batch[i] = (XY_SRC_COPY_BLT_CMD |
-		    XY_SRC_COPY_BLT_WRITE_ALPHA |
-		    XY_SRC_COPY_BLT_WRITE_RGB);
-	if (device->gen >= 4 && src->tiling)
-		batch[i] |= XY_SRC_COPY_BLT_SRC_TILED;
-	if (device->gen >= 4 && dst->tiling)
-		batch[i] |= XY_SRC_COPY_BLT_DST_TILED;
-	batch[i++] |= 6 + 2 * has_64b_reloc;
-
 	pitch = dst->stride;
 	if (device->gen >= 4 && dst->tiling)
 		pitch /= 4;
-	batch[i++] = 3 << 24 | 0xcc << 16 | pitch;
 
+	if (!blt_has_xy_src_copy(device->fd)) {
+		batch[i++] = fast_copy_dword0(src->tiling, dst->tiling);
+		dword1 = fast_copy_dword1(src->tiling, dst->tiling, 32);
+		batch[i++] = dword1 | pitch;
+	} else {
+		batch[i] = (XY_SRC_COPY_BLT_CMD |
+			    XY_SRC_COPY_BLT_WRITE_ALPHA |
+			    XY_SRC_COPY_BLT_WRITE_RGB);
+		if (device->gen >= 4 && src->tiling)
+			batch[i] |= XY_SRC_COPY_BLT_SRC_TILED;
+		if (device->gen >= 4 && dst->tiling)
+			batch[i] |= XY_SRC_COPY_BLT_DST_TILED;
+		batch[i++] |= 6 + 2 * has_64b_reloc;
+		batch[i++] = 3 << 24 | 0xcc << 16 | pitch;
+	}
 	batch[i++] = dst_y << 16 | dst_x;
 	batch[i++] = (height + dst_y) << 16 | (width + dst_x);
 	reloc[0].target_handle = obj[0].handle;
@@ -792,6 +809,8 @@ igt_main
 		struct buffer *src, *dst;
 		unsigned int x, y;
 
+		devid = intel_get_drm_devid(device.fd);
+
 		for (unsigned int height = 1; height <= 16; height <<= 2) {
 			for (unsigned int y0 = ZERO; y0 <= (height > 2 ? BELOW : ZERO); y0++) {
 				for (unsigned int width = 1; width <= 64; width <<= 2) {
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t v3 5/8] lib/intel_batchbuffer: Add wrapper API to use XY_FAST_COPY_BLT/XY_SRC_BLT
  2023-03-14 14:44 [igt-dev] [PATCH i-g-t v3 0/8] Update gem_blits for newer generations Karolina Stolarek
                   ` (3 preceding siblings ...)
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 4/8] tests/i915/gem_blits: Use new copy instruction Karolina Stolarek
@ 2023-03-14 14:44 ` Karolina Stolarek
  2023-03-15 10:45   ` Zbigniew Kempczyński
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 6/8] tests/i915/gem_blits: Add XY_FAST_COPY_BLT support for gem_blits Karolina Stolarek
                   ` (4 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Karolina Stolarek @ 2023-03-14 14:44 UTC (permalink / raw)
  To: igt-dev; +Cc: Nirmoy Das

From: Vikas Srivastava <vikas.srivastava@intel.com>

Add wrapper API in intel_batchbuffer to call respective copy functions
for XY_FAST_COPY_BLT or XY_SRC_BLT based on platform on which its
supported.

Signed-off-by: Vikas Srivastava <vikas.srivastava@intel.com>
Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
Cc: Nirmoy Das <nirmoy.das@intel.com>
Cc: Andi Shyti <andi.shyti@linux.intel.com>
---
 lib/intel_batchbuffer.c | 72 +++++++++++++++++++++++++++++++++++++++++
 lib/intel_batchbuffer.h | 22 +++++++++++++
 2 files changed, 94 insertions(+)

diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
index a2bf5d2e..a5157194 100644
--- a/lib/intel_batchbuffer.c
+++ b/lib/intel_batchbuffer.c
@@ -277,6 +277,78 @@ static uint32_t src_copy_dword1(uint32_t dst_pitch, uint32_t bpp)
 	return dword1;
 }
 
+/**
+ * igt_blitter_copy:
+ * @fd: file descriptor of the i915 driver
+ * @ahnd: handle to an allocator
+ * @ctx: context within which execute copy blit
+ * @src_handle: GEM handle of the source buffer
+ * @src_delta: offset into the source GEM bo, in bytes
+ * @src_stride: Stride (in bytes) of the source buffer
+ * @src_tiling: Tiling mode of the source buffer
+ * @src_x: X coordinate of the source region to copy
+ * @src_y: Y coordinate of the source region to copy
+ * @src_size: size of the src bo required for allocator and softpin
+ * @width: Width of the region to copy
+ * @height: Height of the region to copy
+ * @bpp: source and destination bits per pixel
+ * @dst_handle: GEM handle of the destination buffer
+ * @dst_delta: offset into the destination GEM bo, in bytes
+ * @dst_stride: Stride (in bytes) of the destination buffer
+ * @dst_tiling: Tiling mode of the destination buffer
+ * @dst_x: X coordinate of destination
+ * @dst_y: Y coordinate of destination
+ * @dst_size: size of the dst bo required for allocator and softpin
+ *
+ * Wrapper API to call appropriate blitter copy function.
+ */
+
+void igt_blitter_copy(int fd,
+		      uint64_t ahnd,
+		      uint32_t ctx,
+		      const intel_ctx_cfg_t *cfg,
+		      /* src */
+		      uint32_t src_handle,
+		      uint32_t src_delta,
+		      uint32_t src_stride,
+		      uint32_t src_tiling,
+		      uint32_t src_x, uint32_t src_y,
+		      uint64_t src_size,
+		      /* size */
+		      uint32_t width, uint32_t height,
+		      /* bpp */
+		      uint32_t bpp,
+		      /* dst */
+		      uint32_t dst_handle,
+		      uint32_t dst_delta,
+		      uint32_t dst_stride,
+		      uint32_t dst_tiling,
+		      uint32_t dst_x, uint32_t dst_y,
+		      uint64_t dst_size)
+{
+	uint32_t devid;
+
+	devid = intel_get_drm_devid(fd);
+
+	if (intel_graphics_ver(devid) >= IP_VER(12, 60))
+		igt_blitter_fast_copy__raw(fd, ahnd, ctx, NULL,
+					   src_handle, src_delta,
+					   src_stride, src_tiling,
+					   src_x, src_y, src_size,
+					   width, height, bpp,
+					   dst_handle, dst_delta,
+					   dst_stride, dst_tiling,
+					   dst_x, dst_y, dst_size);
+	else
+		igt_blitter_src_copy(fd, ahnd, ctx, NULL,
+				     src_handle, src_delta,
+				     src_stride, src_tiling,
+				     src_x, src_y, src_size,
+				     width, height, bpp,
+				     dst_handle, dst_delta,
+				     dst_stride, dst_tiling,
+				     dst_x, dst_y, dst_size);
+}
 /**
  * igt_blitter_src_copy:
  * @fd: file descriptor of the i915 driver
diff --git a/lib/intel_batchbuffer.h b/lib/intel_batchbuffer.h
index 81830d77..aed1d575 100644
--- a/lib/intel_batchbuffer.h
+++ b/lib/intel_batchbuffer.h
@@ -36,6 +36,28 @@ uint32_t fast_copy_dword0(unsigned int src_tiling,
 uint32_t fast_copy_dword1(unsigned int src_tiling,
 			  unsigned int dst_tiling,
 			  int bpp);
+void igt_blitter_copy(int fd,
+		      uint64_t ahnd,
+		      uint32_t ctx,
+		      const intel_ctx_cfg_t *cfg,
+		      /* src */
+		      uint32_t src_handle,
+		      uint32_t src_delta,
+		      uint32_t src_stride,
+		      uint32_t src_tiling,
+		      uint32_t src_x, uint32_t src_y,
+		      uint64_t src_size,
+		      /* size */
+		      uint32_t width, uint32_t height,
+		      /* bpp */
+		      uint32_t bpp,
+		      /* dst */
+		      uint32_t dst_handle,
+		      uint32_t dst_delta,
+		      uint32_t dst_stride,
+		      uint32_t dst_tiling,
+		      uint32_t dst_x, uint32_t dst_y,
+		      uint64_t dst_size);
 
 void igt_blitter_src_copy(int fd,
 			  uint64_t ahnd,
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t v3 6/8] tests/i915/gem_blits: Add XY_FAST_COPY_BLT support for gem_blits
  2023-03-14 14:44 [igt-dev] [PATCH i-g-t v3 0/8] Update gem_blits for newer generations Karolina Stolarek
                   ` (4 preceding siblings ...)
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 5/8] lib/intel_batchbuffer: Add wrapper API to use XY_FAST_COPY_BLT/XY_SRC_BLT Karolina Stolarek
@ 2023-03-14 14:44 ` Karolina Stolarek
  2023-03-15 10:49   ` Zbigniew Kempczyński
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 7/8] lib/intel_cmds_info: Reorder blt_tiling_type enum Karolina Stolarek
                   ` (3 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Karolina Stolarek @ 2023-03-14 14:44 UTC (permalink / raw)
  To: igt-dev; +Cc: Arjun Melkaveri, Nirmoy Das

From: Arjun Melkaveri <arjun.melkaveri@intel.com>

Test case uses legacy command XY_SRC_COPY_BLT_CMD which is not supported
on newer generations. Modify test to use XY_FAST_COPY_BLT.

Signed-off-by: Arjun Melkaveri <arjun.melkaveri@intel.com>
Signed-off-by: Vikas Srivastava <vikas.srivastava@intel.com>
Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
Cc: Nirmoy Das <nirmoy.das@intel.com>
Cc: Andi Shyti <andi.shyti@linux.intel.com>
---
 tests/i915/gem_blits.c | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/tests/i915/gem_blits.c b/tests/i915/gem_blits.c
index e5ef3662..b38d6c7e 100644
--- a/tests/i915/gem_blits.c
+++ b/tests/i915/gem_blits.c
@@ -216,7 +216,12 @@ static void buffer_set_tiling(const struct device *device,
 
 	if (!blt_has_xy_src_copy(device->fd)) {
 		batch[i++] = fast_copy_dword0(buffer->tiling, tiling);
-		dword1 = fast_copy_dword1(buffer->tiling, tiling, 32);
+		/* Post ATS-M platforms require tile4 bit to be set for YMAJOR mode */
+		dword1 = fast_copy_dword1(buffer->tiling ?
+					  I915_TILING_Yf : I915_TILING_NONE,
+					  tiling ?
+					  I915_TILING_Yf : I915_TILING_NONE,
+					  32);
 		batch[i++] = dword1 | pitch;
 	} else {
 		batch[i] = (XY_SRC_COPY_BLT_CMD |
@@ -361,8 +366,11 @@ static bool blit_to_linear(const struct device *device,
 	}
 
 	if (!blt_has_xy_src_copy(device->fd)) {
-		batch[i++] = fast_copy_dword0(buffer->tiling, I915_TILING_NONE);
-		dword1 = fast_copy_dword1(buffer->tiling, I915_TILING_NONE, 32);
+		batch[i++] = fast_copy_dword0(buffer->tiling, 0);
+		/* Post ATS-M platforms require tile4 bit to be set for YMAJOR mode */
+		dword1 = fast_copy_dword1(buffer->tiling ?
+					  I915_TILING_Yf : I915_TILING_NONE,
+					  0, 32);
 		batch[i++] = dword1 | buffer->stride;
 	} else {
 		batch[i] = (XY_SRC_COPY_BLT_CMD |
@@ -705,7 +713,12 @@ blit(const struct device *device,
 
 	if (!blt_has_xy_src_copy(device->fd)) {
 		batch[i++] = fast_copy_dword0(src->tiling, dst->tiling);
-		dword1 = fast_copy_dword1(src->tiling, dst->tiling, 32);
+		/* Post ATS-M platforms require tile4 bit to be set for YMAJOR mode */
+		dword1 = fast_copy_dword1(src->tiling ?
+					  I915_TILING_Yf : I915_TILING_NONE,
+					  dst->tiling ?
+					  I915_TILING_Yf : I915_TILING_NONE,
+					  32);
 		batch[i++] = dword1 | pitch;
 	} else {
 		batch[i] = (XY_SRC_COPY_BLT_CMD |
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t v3 7/8] lib/intel_cmds_info: Reorder blt_tiling_type enum
  2023-03-14 14:44 [igt-dev] [PATCH i-g-t v3 0/8] Update gem_blits for newer generations Karolina Stolarek
                   ` (5 preceding siblings ...)
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 6/8] tests/i915/gem_blits: Add XY_FAST_COPY_BLT support for gem_blits Karolina Stolarek
@ 2023-03-14 14:44 ` Karolina Stolarek
  2023-03-15 10:49   ` Zbigniew Kempczyński
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 8/8] tests/gem_blits: Use intel_cmds_info library Karolina Stolarek
                   ` (2 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Karolina Stolarek @ 2023-03-14 14:44 UTC (permalink / raw)
  To: igt-dev

Move Yf Major up so it follows the order of tiling definitions
in intel_batchbuffer.h

Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
Cc: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
---
 lib/i915/intel_cmds_info.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/i915/intel_cmds_info.h b/lib/i915/intel_cmds_info.h
index 57e34c4b..9af2f2d9 100644
--- a/lib/i915/intel_cmds_info.h
+++ b/lib/i915/intel_cmds_info.h
@@ -13,8 +13,8 @@ enum blt_tiling_type {
 	T_XMAJOR,
 	T_YMAJOR,
 	T_TILE4,
-	T_TILE64,
 	T_YFMAJOR,
+	T_TILE64,
 	__BLT_MAX_TILING
 };
 
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t v3 8/8] tests/gem_blits: Use intel_cmds_info library
  2023-03-14 14:44 [igt-dev] [PATCH i-g-t v3 0/8] Update gem_blits for newer generations Karolina Stolarek
                   ` (6 preceding siblings ...)
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 7/8] lib/intel_cmds_info: Reorder blt_tiling_type enum Karolina Stolarek
@ 2023-03-14 14:44 ` Karolina Stolarek
  2023-03-15 10:54   ` Zbigniew Kempczyński
  2023-03-14 16:13 ` [igt-dev] ✓ Fi.CI.BAT: success for Update gem_blits for newer generations (rev3) Patchwork
  2023-03-15 20:05 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  9 siblings, 1 reply; 20+ messages in thread
From: Karolina Stolarek @ 2023-03-14 14:44 UTC (permalink / raw)
  To: igt-dev

Update the test to use blt_tiling_type values. Make it skip
if a copy command doesn't support a specific tiling format.

Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
Cc: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
---
 lib/i915/i915_blt.c    |  6 ++++
 tests/i915/gem_blits.c | 66 +++++++++++++++++++++++++-----------------
 2 files changed, 46 insertions(+), 26 deletions(-)

diff --git a/lib/i915/i915_blt.c b/lib/i915/i915_blt.c
index 13105820..ef67fe26 100644
--- a/lib/i915/i915_blt.c
+++ b/lib/i915/i915_blt.c
@@ -16,6 +16,12 @@
 #define BITRANGE(start, end) (end - start + 1)
 #define GET_CMDS_INFO(__fd) intel_get_cmds_info(intel_get_drm_devid(__fd))
 
+/* Blitter tiling definitions sanity checks */
+static_assert(T_LINEAR == I915_TILING_NONE, "Linear definitions have to match");
+static_assert(T_XMAJOR == I915_TILING_X, "TileX definitions have to match");
+static_assert(T_YMAJOR == I915_TILING_Y, "TileY definitions have to match");
+static_assert(T_YFMAJOR == I915_TILING_Yf, "TileYf definitions have to match");
+
 enum blt_special_mode {
 	SM_NONE,
 	SM_FULL_RESOLVE,
diff --git a/tests/i915/gem_blits.c b/tests/i915/gem_blits.c
index b38d6c7e..4aa8624c 100644
--- a/tests/i915/gem_blits.c
+++ b/tests/i915/gem_blits.c
@@ -72,7 +72,7 @@ get_tiling_stride(const struct device *device,
 	if (tiling) {
 		if (device->gen < 3)
 			stride = ALIGN(stride, 128);
-		else if (device->gen < 4 || tiling == I915_TILING_X)
+		else if (device->gen < 4 || tiling == T_XMAJOR)
 			stride = ALIGN(stride, 512);
 		else
 			stride = ALIGN(stride, 128);
@@ -96,7 +96,7 @@ get_tiling_height(const struct device *device,
 
 	if (device->gen < 3)
 		return ALIGN(height, 16);
-	else if (device->gen < 4 || tiling == I915_TILING_X)
+	else if (device->gen < 4 || tiling == T_XMAJOR)
 		return ALIGN(height, 8);
 	else
 		return ALIGN(height, 32);
@@ -117,8 +117,8 @@ static struct buffer *buffer_create(const struct device *device,
 	buffer->width = width;
 	buffer->height = height;
 
-	buffer->tiling = I915_TILING_NONE;
-	buffer->stride = get_tiling_stride(device, width, I915_TILING_NONE);
+	buffer->tiling = T_LINEAR;
+	buffer->stride = get_tiling_stride(device, width, T_LINEAR);
 	buffer->size = ALIGN(buffer->stride * height, 4096);
 	buffer->handle = gem_create(device->fd, buffer->size);
 	buffer->caching = device->llc;
@@ -196,16 +196,16 @@ static void buffer_set_tiling(const struct device *device,
 
 	i = 0;
 
-	if ((tiling | buffer->tiling) >= I915_TILING_Y) {
+	if ((tiling | buffer->tiling) >= T_YMAJOR) {
 		unsigned int mask;
 
 		batch[i++] = MI_LOAD_REGISTER_IMM(1);
 		batch[i++] = BCS_SWCTRL;
 
 		mask = (BCS_SRC_Y | BCS_DST_Y) << 16;
-		if (buffer->tiling == I915_TILING_Y)
+		if (buffer->tiling == T_YMAJOR)
 			mask |= BCS_SRC_Y;
-		if (tiling == I915_TILING_Y)
+		if (tiling == T_YMAJOR)
 			mask |= BCS_DST_Y;
 		batch[i++] = mask;
 	}
@@ -218,9 +218,9 @@ static void buffer_set_tiling(const struct device *device,
 		batch[i++] = fast_copy_dword0(buffer->tiling, tiling);
 		/* Post ATS-M platforms require tile4 bit to be set for YMAJOR mode */
 		dword1 = fast_copy_dword1(buffer->tiling ?
-					  I915_TILING_Yf : I915_TILING_NONE,
+					  T_YFMAJOR : T_LINEAR,
 					  tiling ?
-					  I915_TILING_Yf : I915_TILING_NONE,
+					  T_YFMAJOR : T_LINEAR,
 					  32);
 		batch[i++] = dword1 | pitch;
 	} else {
@@ -258,7 +258,7 @@ static void buffer_set_tiling(const struct device *device,
 	if (has_64b_reloc)
 		batch[i++] = obj[1].offset >> 32;
 
-	if ((tiling | buffer->tiling) >= I915_TILING_Y) {
+	if ((tiling | buffer->tiling) >= T_YMAJOR) {
 		igt_assert(device->gen >= 6);
 		batch[i++] = MI_FLUSH_DW_CMD | 2;
 		batch[i++] = 0;
@@ -353,14 +353,14 @@ static bool blit_to_linear(const struct device *device,
 
 	batch = gem_mmap__cpu(device->fd, obj[2].handle, 0, 4096, PROT_WRITE);
 
-	if (buffer->tiling >= I915_TILING_Y) {
+	if (buffer->tiling >= T_YMAJOR) {
 		unsigned int mask;
 
 		batch[i++] = MI_LOAD_REGISTER_IMM(1);
 		batch[i++] = BCS_SWCTRL;
 
 		mask = (BCS_SRC_Y | BCS_DST_Y) << 16;
-		if (buffer->tiling == I915_TILING_Y)
+		if (buffer->tiling == T_YMAJOR)
 			mask |= BCS_SRC_Y;
 		batch[i++] = mask;
 	}
@@ -369,7 +369,7 @@ static bool blit_to_linear(const struct device *device,
 		batch[i++] = fast_copy_dword0(buffer->tiling, 0);
 		/* Post ATS-M platforms require tile4 bit to be set for YMAJOR mode */
 		dword1 = fast_copy_dword1(buffer->tiling ?
-					  I915_TILING_Yf : I915_TILING_NONE,
+					  T_YFMAJOR : T_LINEAR,
 					  0, 32);
 		batch[i++] = dword1 | buffer->stride;
 	} else {
@@ -405,7 +405,7 @@ static bool blit_to_linear(const struct device *device,
 	if (has_64b_reloc)
 		batch[i++] = obj[1].offset >> 32;
 
-	if (buffer->tiling >= I915_TILING_Y) {
+	if (buffer->tiling >= T_YMAJOR) {
 		igt_assert(device->gen >= 6);
 		batch[i++] = MI_FLUSH_DW_CMD | 2;
 		batch[i++] = 0;
@@ -693,16 +693,16 @@ blit(const struct device *device,
 	}
 	batch = gem_mmap__cpu(device->fd, obj[2].handle, 0, 4096, PROT_WRITE);
 
-	if ((src->tiling | dst->tiling) >= I915_TILING_Y) {
+	if ((src->tiling | dst->tiling) >= T_YMAJOR) {
 		unsigned int mask;
 
 		batch[i++] = MI_LOAD_REGISTER_IMM(1);
 		batch[i++] = BCS_SWCTRL;
 
 		mask = (BCS_SRC_Y | BCS_DST_Y) << 16;
-		if (src->tiling == I915_TILING_Y)
+		if (src->tiling == T_YMAJOR)
 			mask |= BCS_SRC_Y;
-		if (dst->tiling == I915_TILING_Y)
+		if (dst->tiling == T_YMAJOR)
 			mask |= BCS_DST_Y;
 		batch[i++] = mask;
 	}
@@ -715,9 +715,9 @@ blit(const struct device *device,
 		batch[i++] = fast_copy_dword0(src->tiling, dst->tiling);
 		/* Post ATS-M platforms require tile4 bit to be set for YMAJOR mode */
 		dword1 = fast_copy_dword1(src->tiling ?
-					  I915_TILING_Yf : I915_TILING_NONE,
+					  T_YFMAJOR : T_LINEAR,
 					  dst->tiling ?
-					  I915_TILING_Yf : I915_TILING_NONE,
+					  T_YFMAJOR : T_LINEAR,
 					  32);
 		batch[i++] = dword1 | pitch;
 	} else {
@@ -755,7 +755,7 @@ blit(const struct device *device,
 	if (has_64b_reloc)
 		batch[i++] = obj[1].offset >> 32;
 
-	if ((src->tiling | dst->tiling) >= I915_TILING_Y) {
+	if ((src->tiling | dst->tiling) >= T_YMAJOR) {
 		igt_assert(device->gen >= 6);
 		batch[i++] = MI_FLUSH_DW_CMD | 2;
 		batch[i++] = 0;
@@ -803,6 +803,15 @@ static int start_at(int x, enum start s)
 	}
 }
 
+static bool blit_supports_tiling(int fd, enum blt_tiling_type tiling)
+{
+	if (blt_has_xy_src_copy(fd))
+		return blt_xy_src_copy_supports_tiling(fd, tiling);
+
+	/* Test is run on newer platform, so check fast-copy support instead */
+	return blt_fast_copy_supports_tiling(fd, tiling);
+}
+
 igt_main
 {
 	struct device device;
@@ -835,15 +844,20 @@ igt_main
 								    width * 16, height * 4);
 
 						y = start_at(height, y0);
-						for (unsigned int src_tiling = I915_TILING_NONE;
-						     src_tiling <= (device.gen >= 6 ? I915_TILING_Y : I915_TILING_X);
-						     src_tiling++) {
+
+						for (unsigned int src_tiling = T_LINEAR;
+						     src_tiling <= T_YMAJOR; src_tiling++) {
+							if (!blit_supports_tiling(device.fd, src_tiling))
+								continue;
+
 							buffer_set_tiling(&device, src, src_tiling);
 
 							x = start_at(width, x0);
-							for (unsigned int dst_tiling = I915_TILING_NONE;
-							     dst_tiling <= (device.gen >= 6 ? I915_TILING_Y : I915_TILING_X);
-							     dst_tiling++) {
+							for (unsigned int dst_tiling = T_LINEAR;
+							     dst_tiling <= T_YMAJOR; dst_tiling++) {
+								if (!blit_supports_tiling(device.fd, dst_tiling))
+									continue;
+
 								buffer_set_tiling(&device, dst, dst_tiling);
 
 								for (enum mode down = CPU; down <= WC; down++) {
-- 
2.25.1

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

* [igt-dev] ✓ Fi.CI.BAT: success for Update gem_blits for newer generations (rev3)
  2023-03-14 14:44 [igt-dev] [PATCH i-g-t v3 0/8] Update gem_blits for newer generations Karolina Stolarek
                   ` (7 preceding siblings ...)
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 8/8] tests/gem_blits: Use intel_cmds_info library Karolina Stolarek
@ 2023-03-14 16:13 ` Patchwork
  2023-03-15 20:05 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  9 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2023-03-14 16:13 UTC (permalink / raw)
  To: Karolina Stolarek; +Cc: igt-dev

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

== Series Details ==

Series: Update gem_blits for newer generations (rev3)
URL   : https://patchwork.freedesktop.org/series/114776/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_12857 -> IGTPW_8605
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

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

  Additional (1): bat-atsm-1 
  Missing    (1): fi-snb-2520m 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@fbdev@eof:
    - bat-atsm-1:         NOTRUN -> [SKIP][1] ([i915#2582]) +4 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/bat-atsm-1/igt@fbdev@eof.html

  * igt@gem_mmap@basic:
    - bat-atsm-1:         NOTRUN -> [SKIP][2] ([i915#4083])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/bat-atsm-1/igt@gem_mmap@basic.html

  * igt@gem_sync@basic-each:
    - bat-atsm-1:         NOTRUN -> [FAIL][3] ([i915#8062]) +1 similar issue
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/bat-atsm-1/igt@gem_sync@basic-each.html

  * igt@gem_tiled_fence_blits@basic:
    - bat-atsm-1:         NOTRUN -> [SKIP][4] ([i915#4077]) +2 similar issues
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/bat-atsm-1/igt@gem_tiled_fence_blits@basic.html

  * igt@gem_tiled_pread_basic:
    - bat-atsm-1:         NOTRUN -> [SKIP][5] ([i915#4079]) +1 similar issue
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/bat-atsm-1/igt@gem_tiled_pread_basic.html

  * igt@i915_hangman@error-state-basic:
    - bat-atsm-1:         NOTRUN -> [ABORT][6] ([i915#8060])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/bat-atsm-1/igt@i915_hangman@error-state-basic.html

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

  * igt@kms_chamelium_hpd@common-hpd-after-suspend:
    - bat-adlp-9:         NOTRUN -> [SKIP][9] ([i915#7828])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/bat-adlp-9/igt@kms_chamelium_hpd@common-hpd-after-suspend.html
    - bat-rpls-1:         NOTRUN -> [SKIP][10] ([i915#7828])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/bat-rpls-1/igt@kms_chamelium_hpd@common-hpd-after-suspend.html

  * igt@kms_pipe_crc_basic@suspend-read-crc:
    - bat-rpls-1:         NOTRUN -> [SKIP][11] ([i915#1845])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/bat-rpls-1/igt@kms_pipe_crc_basic@suspend-read-crc.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@gt_heartbeat:
    - fi-cfl-8109u:       [DMESG-FAIL][12] ([i915#5334]) -> [PASS][13]
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/fi-cfl-8109u/igt@i915_selftest@live@gt_heartbeat.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/fi-cfl-8109u/igt@i915_selftest@live@gt_heartbeat.html

  * igt@i915_selftest@live@requests:
    - bat-rpls-1:         [ABORT][14] ([i915#4983] / [i915#7694] / [i915#7911] / [i915#7981]) -> [PASS][15]
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/bat-rpls-1/igt@i915_selftest@live@requests.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/bat-rpls-1/igt@i915_selftest@live@requests.html
    - bat-adlp-9:         [ABORT][16] ([i915#7982]) -> [PASS][17]
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/bat-adlp-9/igt@i915_selftest@live@requests.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/bat-adlp-9/igt@i915_selftest@live@requests.html

  
  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983
  [i915#5334]: https://gitlab.freedesktop.org/drm/intel/issues/5334
  [i915#7694]: https://gitlab.freedesktop.org/drm/intel/issues/7694
  [i915#7699]: https://gitlab.freedesktop.org/drm/intel/issues/7699
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#7911]: https://gitlab.freedesktop.org/drm/intel/issues/7911
  [i915#7981]: https://gitlab.freedesktop.org/drm/intel/issues/7981
  [i915#7982]: https://gitlab.freedesktop.org/drm/intel/issues/7982
  [i915#8060]: https://gitlab.freedesktop.org/drm/intel/issues/8060
  [i915#8062]: https://gitlab.freedesktop.org/drm/intel/issues/8062


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7194 -> IGTPW_8605

  CI-20190529: 20190529
  CI_DRM_12857: 004fefbbf160569f80946d1e516d538b7ecb04f2 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8605: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/index.html
  IGT_7194: d22d66efd6211a22d301649b63d58c8c293e0817 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* Re: [igt-dev] [PATCH i-g-t v3 1/8] lib/i915_blt: Add helpers to check XY_SRC_COPY support
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 1/8] lib/i915_blt: Add helpers to check XY_SRC_COPY support Karolina Stolarek
@ 2023-03-15  8:32   ` Zbigniew Kempczyński
  0 siblings, 0 replies; 20+ messages in thread
From: Zbigniew Kempczyński @ 2023-03-15  8:32 UTC (permalink / raw)
  To: Karolina Stolarek; +Cc: igt-dev

On Tue, Mar 14, 2023 at 03:44:33PM +0100, Karolina Stolarek wrote:
> Add predicates that check if the command with a specific
> tiling format is supported on the current platform.
> 
> Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
> Cc: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
> ---
>  lib/i915/i915_blt.c | 33 +++++++++++++++++++++++++++++++++
>  lib/i915/i915_blt.h |  2 ++
>  2 files changed, 35 insertions(+)
> 
> diff --git a/lib/i915/i915_blt.c b/lib/i915/i915_blt.c
> index 63eba4ac..13105820 100644
> --- a/lib/i915/i915_blt.c
> +++ b/lib/i915/i915_blt.c
> @@ -295,6 +295,22 @@ bool blt_has_fast_copy(int i915)
>  	return blt_supports_command(cmds_info, XY_FAST_COPY);
>  }
>  
> +/**
> + * blt_has_xy_src_copy
> + * @i915: drm fd
> + *
> + * Check if XY src copy is supported by @i915 device
> + *
> + * Returns:
> + * true if it does, false otherwise.
> + */
> +bool blt_has_xy_src_copy(int i915)
> +{
> +	const struct intel_cmds_info *cmds_info = GET_CMDS_INFO(i915);
> +
> +	return blt_supports_command(cmds_info, XY_SRC_COPY);
> +}
> +
>  /**
>   * blt_fast_copy_supports_tiling
>   * @i915: drm fd
> @@ -329,6 +345,23 @@ bool blt_block_copy_supports_tiling(int i915, enum blt_tiling_type tiling)
>  	return blt_cmd_supports_tiling(cmds_info, XY_BLOCK_COPY, tiling);
>  }
>  
> +/**
> + * blt_xy_src_copy_supports_tiling
> + * @i915: drm fd
> + * @tiling: tiling format
> + *
> + * Check if XY src copy provided by @i915 device supports @tiling format
> + *
> + * Returns:
> + * true if it does, false otherwise.
> + */
> +bool blt_xy_src_copy_supports_tiling(int i915, enum blt_tiling_type tiling)
> +{
> +	const struct intel_cmds_info *cmds_info = GET_CMDS_INFO(i915);
> +
> +	return blt_cmd_supports_tiling(cmds_info, XY_SRC_COPY, tiling);
> +}
> +
>  /**
>   * blt_block_copy_supports_compression
>   * @i915: drm fd
> diff --git a/lib/i915/i915_blt.h b/lib/i915/i915_blt.h
> index 63951db7..a5f0edd1 100644
> --- a/lib/i915/i915_blt.h
> +++ b/lib/i915/i915_blt.h
> @@ -168,9 +168,11 @@ bool blt_cmd_has_property(const struct intel_cmds_info *cmds_info,
>  
>  bool blt_has_block_copy(int i915);
>  bool blt_has_fast_copy(int i915);
> +bool blt_has_xy_src_copy(int i915);
>  
>  bool blt_fast_copy_supports_tiling(int i915, enum blt_tiling_type tiling);
>  bool blt_block_copy_supports_tiling(int i915, enum blt_tiling_type tiling);
> +bool blt_xy_src_copy_supports_tiling(int i915, enum blt_tiling_type tiling);
>  bool blt_block_copy_supports_compression(int i915);
>  bool blt_uses_extended_block_copy(int i915);
>  
> -- 
> 2.25.1
>

LGTM,

Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>

--
Zbigniew 

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

* Re: [igt-dev] [PATCH i-g-t v3 2/8] lib/intel_cmds_info: Correct tiling formats for XY_SRC_COPY
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 2/8] lib/intel_cmds_info: Correct tiling formats for XY_SRC_COPY Karolina Stolarek
@ 2023-03-15 10:11   ` Zbigniew Kempczyński
  0 siblings, 0 replies; 20+ messages in thread
From: Zbigniew Kempczyński @ 2023-03-15 10:11 UTC (permalink / raw)
  To: Karolina Stolarek; +Cc: igt-dev

On Tue, Mar 14, 2023 at 03:44:34PM +0100, Karolina Stolarek wrote:
> Both TileX and TileY are supported since SNB. Update definitions
> for pre-SNB and pre-BDW platforms.
> 
> Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
> Cc: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
> ---
>  lib/i915/intel_cmds_info.c | 24 ++++++++++++++++--------
>  lib/i915/intel_cmds_info.h |  3 ++-
>  lib/intel_device_info.c    | 12 ++++++------
>  3 files changed, 24 insertions(+), 15 deletions(-)
> 
> diff --git a/lib/i915/intel_cmds_info.c b/lib/i915/intel_cmds_info.c
> index 2ac6bc2a..08fc981a 100644
> --- a/lib/i915/intel_cmds_info.c
> +++ b/lib/i915/intel_cmds_info.c
> @@ -22,11 +22,11 @@
>  
>  static const struct blt_cmd_info src_copy = BLT_INFO(SRC_COPY, BIT(T_LINEAR));
>  static const struct blt_cmd_info
> -		pre_gen8_xy_src_copy = BLT_INFO(XY_SRC_COPY,
> +		pre_gen6_xy_src_copy = BLT_INFO(XY_SRC_COPY,
>  						BIT(T_LINEAR) |
>  						BIT(T_XMAJOR));

I started wondering did we support Y on pre-gen6 but I've seen
this exclusion on other code. So:

Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>

--
Zbigniew

>  static const struct blt_cmd_info
> -		gen8_xy_src_copy = BLT_INFO(XY_SRC_COPY,
> +		gen6_xy_src_copy = BLT_INFO(XY_SRC_COPY,
>  					    BIT(T_LINEAR) |
>  					    BIT(T_XMAJOR) |
>  					    BIT(T_YMAJOR));
> @@ -69,29 +69,37 @@ static const struct blt_cmd_info
>  						 BIT(T_TILE64),
>  						 BLT_CMD_EXTENDED);
>  
> -const struct intel_cmds_info pre_gen8_cmds_info = {
> +const struct intel_cmds_info pre_gen6_cmds_info = {
>  	.blt_cmds = {
>  		[SRC_COPY] = &src_copy,
> -		[XY_SRC_COPY] = &pre_gen8_xy_src_copy
> +		[XY_SRC_COPY] = &pre_gen6_xy_src_copy
>  	}
>  };
>  
> +const struct intel_cmds_info gen6_cmds_info =  {
> +	.blt_cmds = {
> +		[SRC_COPY] = &src_copy,
> +		[XY_SRC_COPY] = &gen6_xy_src_copy
> +	}
> +
> +};
> +
>  const struct intel_cmds_info gen8_cmds_info = {
>  	.blt_cmds = {
> -		[XY_SRC_COPY] = &gen8_xy_src_copy,
> +		[XY_SRC_COPY] = &gen6_xy_src_copy,
>  	}
>  };
>  
>  const struct intel_cmds_info gen11_cmds_info = {
>  	.blt_cmds = {
> -		[XY_SRC_COPY] = &gen8_xy_src_copy,
> +		[XY_SRC_COPY] = &gen6_xy_src_copy,
>  		[XY_FAST_COPY] = &gen11_xy_fast_copy,
>  	}
>  };
>  
>  const struct intel_cmds_info gen12_cmds_info = {
>  	.blt_cmds = {
> -		[XY_SRC_COPY] = &gen8_xy_src_copy,
> +		[XY_SRC_COPY] = &gen6_xy_src_copy,
>  		[XY_FAST_COPY] = &gen12_xy_fast_copy,
>  		[XY_BLOCK_COPY] = &gen12_xy_block_copy,
>  	}
> @@ -99,7 +107,7 @@ const struct intel_cmds_info gen12_cmds_info = {
>  
>  const struct intel_cmds_info gen12_dg2_cmds_info = {
>  	.blt_cmds = {
> -		[XY_SRC_COPY] = &gen8_xy_src_copy,
> +		[XY_SRC_COPY] = &gen6_xy_src_copy,
>  		[XY_FAST_COPY] = &dg2_xy_fast_copy,
>  		[XY_BLOCK_COPY] = &dg2_xy_block_copy,
>  	}
> diff --git a/lib/i915/intel_cmds_info.h b/lib/i915/intel_cmds_info.h
> index 9bf6ecd5..57e34c4b 100644
> --- a/lib/i915/intel_cmds_info.h
> +++ b/lib/i915/intel_cmds_info.h
> @@ -39,7 +39,8 @@ struct intel_cmds_info {
>  	struct blt_cmd_info const *blt_cmds[__BLT_MAX_CMD];
>  };
>  
> -extern const struct intel_cmds_info pre_gen8_cmds_info;
> +extern const struct intel_cmds_info pre_gen6_cmds_info;
> +extern const struct intel_cmds_info gen6_cmds_info;
>  extern const struct intel_cmds_info gen8_cmds_info;
>  extern const struct intel_cmds_info gen11_cmds_info;
>  extern const struct intel_cmds_info gen12_cmds_info;
> diff --git a/lib/intel_device_info.c b/lib/intel_device_info.c
> index 12b81d48..0baad721 100644
> --- a/lib/intel_device_info.c
> +++ b/lib/intel_device_info.c
> @@ -145,7 +145,7 @@ static const struct intel_device_info intel_sandybridge_info = {
>  	.graphics_ver = 6,
>  	.display_ver = 6,
>  	.is_sandybridge = true,
> -	.cmds_info = &pre_gen8_cmds_info,
> +	.cmds_info = &gen6_cmds_info,
>  	.codename = "sandybridge"
>  };
>  static const struct intel_device_info intel_sandybridge_m_info = {
> @@ -153,7 +153,7 @@ static const struct intel_device_info intel_sandybridge_m_info = {
>  	.display_ver = 6,
>  	.is_mobile = true,
>  	.is_sandybridge = true,
> -	.cmds_info = &pre_gen8_cmds_info,
> +	.cmds_info = &gen6_cmds_info,
>  	.codename = "sandybridge"
>  };
>  
> @@ -161,7 +161,7 @@ static const struct intel_device_info intel_ivybridge_info = {
>  	.graphics_ver = 7,
>  	.display_ver = 7,
>  	.is_ivybridge = true,
> -	.cmds_info = &pre_gen8_cmds_info,
> +	.cmds_info = &gen6_cmds_info,
>  	.codename = "ivybridge"
>  };
>  static const struct intel_device_info intel_ivybridge_m_info = {
> @@ -169,7 +169,7 @@ static const struct intel_device_info intel_ivybridge_m_info = {
>  	.display_ver = 7,
>  	.is_mobile = true,
>  	.is_ivybridge = true,
> -	.cmds_info = &pre_gen8_cmds_info,
> +	.cmds_info = &gen6_cmds_info,
>  	.codename = "ivybridge"
>  };
>  
> @@ -177,7 +177,7 @@ static const struct intel_device_info intel_valleyview_info = {
>  	.graphics_ver = 7,
>  	.display_ver = 7,
>  	.is_valleyview = true,
> -	.cmds_info = &pre_gen8_cmds_info,
> +	.cmds_info = &gen6_cmds_info,
>  	.codename = "valleyview"
>  };
>  
> @@ -185,7 +185,7 @@ static const struct intel_device_info intel_valleyview_info = {
>  	.graphics_ver = 7, \
>  	.display_ver = 7, \
>  	.is_haswell = true, \
> -	.cmds_info = &pre_gen8_cmds_info, \
> +	.cmds_info = &gen6_cmds_info, \
>  	.codename = "haswell"
>  
>  static const struct intel_device_info intel_haswell_gt1_info = {
> -- 
> 2.25.1
> 

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

* Re: [igt-dev] [PATCH i-g-t v3 3/8] lib/intel_device_info: Add tiling information for early gens
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 3/8] lib/intel_device_info: Add tiling information for early gens Karolina Stolarek
@ 2023-03-15 10:36   ` Zbigniew Kempczyński
  0 siblings, 0 replies; 20+ messages in thread
From: Zbigniew Kempczyński @ 2023-03-15 10:36 UTC (permalink / raw)
  To: Karolina Stolarek; +Cc: igt-dev

On Tue, Mar 14, 2023 at 03:44:35PM +0100, Karolina Stolarek wrote:
> Update relevant intel_device_info entries to store information
> on supported tiling formats.
> 
> Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
> Cc: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
> ---
>  lib/intel_device_info.c | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
> 
> diff --git a/lib/intel_device_info.c b/lib/intel_device_info.c
> index 0baad721..bda4fb63 100644
> --- a/lib/intel_device_info.c
> +++ b/lib/intel_device_info.c
> @@ -27,12 +27,14 @@ static const struct intel_device_info intel_i830_info = {
>  	.graphics_ver = 2,
>  	.display_ver = 2,
>  	.is_almador = true,
> +	.cmds_info = &pre_gen6_cmds_info,
>  	.codename = "almador"
>  };
>  static const struct intel_device_info intel_i845_info = {
>  	.graphics_ver = 2,
>  	.display_ver = 2,
>  	.is_brookdale = true,
> +	.cmds_info = &pre_gen6_cmds_info,
>  	.codename = "brookdale"
>  };
>  static const struct intel_device_info intel_i855_info = {
> @@ -40,12 +42,14 @@ static const struct intel_device_info intel_i855_info = {
>  	.display_ver = 2,
>  	.is_mobile = true,
>  	.is_montara = true,
> +	.cmds_info = &pre_gen6_cmds_info,
>  	.codename = "montara"
>  };
>  static const struct intel_device_info intel_i865_info = {
>  	.graphics_ver = 2,
>  	.display_ver = 2,
>  	.is_springdale = true,
> +	.cmds_info = &pre_gen6_cmds_info,
>  	.codename = "spingdale"
>  };
>  
> @@ -53,6 +57,7 @@ static const struct intel_device_info intel_i915_info = {
>  	.graphics_ver = 3,
>  	.display_ver = 3,
>  	.is_grantsdale = true,
> +	.cmds_info = &pre_gen6_cmds_info,
>  	.codename = "grantsdale"
>  };
>  static const struct intel_device_info intel_i915m_info = {
> @@ -60,12 +65,14 @@ static const struct intel_device_info intel_i915m_info = {
>  	.display_ver = 3,
>  	.is_mobile = true,
>  	.is_alviso = true,
> +	.cmds_info = &pre_gen6_cmds_info,
>  	.codename = "alviso"
>  };
>  static const struct intel_device_info intel_i945_info = {
>  	.graphics_ver = 3,
>  	.display_ver = 3,
>  	.is_lakeport = true,
> +	.cmds_info = &pre_gen6_cmds_info,
>  	.codename = "lakeport"
>  };
>  static const struct intel_device_info intel_i945m_info = {
> @@ -73,6 +80,7 @@ static const struct intel_device_info intel_i945m_info = {
>  	.display_ver = 3,
>  	.is_mobile = true,
>  	.is_calistoga = true,
> +	.cmds_info = &pre_gen6_cmds_info,
>  	.codename = "calistoga"
>  };
>  
> @@ -80,6 +88,7 @@ static const struct intel_device_info intel_g33_info = {
>  	.graphics_ver = 3,
>  	.display_ver = 3,
>  	.is_bearlake = true,
> +	.cmds_info = &pre_gen6_cmds_info,
>  	.codename = "bearlake"
>  };
>  
> @@ -87,6 +96,7 @@ static const struct intel_device_info intel_pineview_g_info = {
>  	.graphics_ver = 3,
>  	.display_ver = 3,
>  	.is_pineview = true,
> +	.cmds_info = &pre_gen6_cmds_info,
>  	.codename = "pineview"
>  };
>  
> @@ -95,6 +105,7 @@ static const struct intel_device_info intel_pineview_m_info = {
>  	.display_ver = 3,
>  	.is_mobile = true,
>  	.is_pineview = true,
> +	.cmds_info = &pre_gen6_cmds_info,
>  	.codename = "pineview"
>  };
>  
> @@ -102,6 +113,7 @@ static const struct intel_device_info intel_i965_info = {
>  	.graphics_ver = 4,
>  	.display_ver = 4,
>  	.is_broadwater = true,
> +	.cmds_info = &pre_gen6_cmds_info,
>  	.codename = "broadwater"
>  };
>  
> @@ -110,6 +122,7 @@ static const struct intel_device_info intel_i965m_info = {
>  	.display_ver = 4,
>  	.is_mobile = true,
>  	.is_crestline = true,
> +	.cmds_info = &pre_gen6_cmds_info,
>  	.codename = "crestline"
>  };
>  
> @@ -117,6 +130,7 @@ static const struct intel_device_info intel_g45_info = {
>  	.graphics_ver = 4,
>  	.display_ver = 4,
>  	.is_eaglelake = true,
> +	.cmds_info = &pre_gen6_cmds_info,
>  	.codename = "eaglelake"
>  };
>  static const struct intel_device_info intel_gm45_info = {
> @@ -124,6 +138,7 @@ static const struct intel_device_info intel_gm45_info = {
>  	.display_ver = 4,
>  	.is_mobile = true,
>  	.is_cantiga = true,
> +	.cmds_info = &pre_gen6_cmds_info,
>  	.codename = "cantiga"
>  };
>  
> @@ -131,6 +146,7 @@ static const struct intel_device_info intel_ironlake_info = {
>  	.graphics_ver = 5,
>  	.display_ver = 5,
>  	.is_ironlake = true,
> +	.cmds_info = &pre_gen6_cmds_info,
>  	.codename = "ironlake" /* clarkdale? */
>  };
>  static const struct intel_device_info intel_ironlake_m_info = {
> @@ -138,6 +154,7 @@ static const struct intel_device_info intel_ironlake_m_info = {
>  	.display_ver = 5,
>  	.is_mobile = true,
>  	.is_arrandale = true,
> +	.cmds_info = &pre_gen6_cmds_info,
>  	.codename = "arrandale"
>  };
>  
> -- 
> 2.25.1
>

Looks ok,

Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>

--
Zbigniew 

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

* Re: [igt-dev] [PATCH i-g-t v3 4/8] tests/i915/gem_blits: Use new copy instruction
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 4/8] tests/i915/gem_blits: Use new copy instruction Karolina Stolarek
@ 2023-03-15 10:42   ` Zbigniew Kempczyński
  0 siblings, 0 replies; 20+ messages in thread
From: Zbigniew Kempczyński @ 2023-03-15 10:42 UTC (permalink / raw)
  To: Karolina Stolarek; +Cc: igt-dev, Arjun Melkaveri, Fei Yang, Nirmoy Das

On Tue, Mar 14, 2023 at 03:44:36PM +0100, Karolina Stolarek wrote:
> From: Arjun Melkaveri <arjun.melkaveri@intel.com>
> 
> The test uses legacy command which is not supported on
> newer GPU generations. Use XY_FAST_COPY_BLT on newer GPU generations.
> 
> Signed-off-by: Arjun Melkaveri <arjun.melkaveri@intel.com>
> Co-developed-by: Nirmoy Das <nirmoy.das@intel.com>
> Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
> Signed-off-by: Fei Yang <fei.yang@intel.com>
> Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
> Cc: Andi Shyti <andi.shyti@linux.intel.com>
> ---
>  lib/intel_batchbuffer.c | 10 ++---
>  lib/intel_batchbuffer.h |  6 +++
>  tests/i915/gem_blits.c  | 87 +++++++++++++++++++++++++----------------
>  3 files changed, 64 insertions(+), 39 deletions(-)
> 
> diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
> index 7bb24c8f..a2bf5d2e 100644
> --- a/lib/intel_batchbuffer.c
> +++ b/lib/intel_batchbuffer.c
> @@ -92,8 +92,8 @@ static uint32_t fast_copy_pitch(unsigned int stride, unsigned int tiling)
>  		return stride;
>  }
>  
> -static uint32_t fast_copy_dword0(unsigned int src_tiling,
> -				 unsigned int dst_tiling)
> +uint32_t fast_copy_dword0(unsigned int src_tiling,
> +			  unsigned int dst_tiling)
>  {
>  	uint32_t dword0 = 0;
>  
> @@ -136,9 +136,9 @@ static uint32_t fast_copy_dword0(unsigned int src_tiling,
>  	return dword0;
>  }
>  
> -static uint32_t fast_copy_dword1(unsigned int src_tiling,
> -				 unsigned int dst_tiling,
> -				 int bpp)
> +uint32_t fast_copy_dword1(unsigned int src_tiling,
> +			  unsigned int dst_tiling,
> +			  int bpp)
>  {
>  	uint32_t dword1 = 0;
>  
> diff --git a/lib/intel_batchbuffer.h b/lib/intel_batchbuffer.h
> index 37db0ffa..81830d77 100644
> --- a/lib/intel_batchbuffer.h
> +++ b/lib/intel_batchbuffer.h
> @@ -31,6 +31,12 @@ enum i915_compression {
>  	I915_COMPRESSION_MEDIA,
>  };
>  
> +uint32_t fast_copy_dword0(unsigned int src_tiling,
> +			  unsigned int dst_tiling);
> +uint32_t fast_copy_dword1(unsigned int src_tiling,
> +			  unsigned int dst_tiling,
> +			  int bpp);
> +
>  void igt_blitter_src_copy(int fd,
>  			  uint64_t ahnd,
>  			  uint32_t ctx,
> diff --git a/tests/i915/gem_blits.c b/tests/i915/gem_blits.c
> index 9ea3925c..e5ef3662 100644
> --- a/tests/i915/gem_blits.c
> +++ b/tests/i915/gem_blits.c
> @@ -22,15 +22,19 @@
>   *
>   */
>  
> +#include "intel_batchbuffer.h"
>  #include "i915/gem.h"
>  #include "i915/gem_create.h"
>  #include "igt.h"
>  #include "igt_x86.h"
> +#include "i915/i915_blt.h"
>  
>  #define BCS_SWCTRL 0x22200
>  #define BCS_SRC_Y (1 << 0)
>  #define BCS_DST_Y (1 << 1)
>  
> +static uint32_t devid;
> +
>  struct device {
>  	int fd;
>  	int gen;
> @@ -145,8 +149,7 @@ static void buffer_set_tiling(const struct device *device,
>  	struct drm_i915_gem_relocation_entry reloc[2];
>  	struct drm_i915_gem_execbuffer2 execbuf;
>  	const bool has_64b_reloc = device->gen >= 8;
> -	uint32_t stride, size, pitch;
> -	uint32_t *batch;
> +	uint32_t stride, size, pitch, *batch, dword1;
>  	int i;
>  
>  	if (buffer->tiling == tiling)
> @@ -207,19 +210,25 @@ static void buffer_set_tiling(const struct device *device,
>  		batch[i++] = mask;
>  	}
>  
> -	batch[i] = (XY_SRC_COPY_BLT_CMD |
> -		    XY_SRC_COPY_BLT_WRITE_ALPHA |
> -		    XY_SRC_COPY_BLT_WRITE_RGB);
> -	if (device->gen >= 4 && buffer->tiling)
> -		batch[i] |= XY_SRC_COPY_BLT_SRC_TILED;
> -	if (device->gen >= 4 && tiling)
> -		batch[i] |= XY_SRC_COPY_BLT_DST_TILED;
> -	batch[i++] |= 6 + 2 * has_64b_reloc;
> -
>  	pitch = stride;
>  	if (device->gen >= 4 && tiling)
>  		pitch /= 4;
> -	batch[i++] = 3 << 24 | 0xcc << 16 | pitch;
> +
> +	if (!blt_has_xy_src_copy(device->fd)) {
> +		batch[i++] = fast_copy_dword0(buffer->tiling, tiling);
> +		dword1 = fast_copy_dword1(buffer->tiling, tiling, 32);
> +		batch[i++] = dword1 | pitch;
> +	} else {
> +		batch[i] = (XY_SRC_COPY_BLT_CMD |
> +			    XY_SRC_COPY_BLT_WRITE_ALPHA |
> +			    XY_SRC_COPY_BLT_WRITE_RGB);
> +		if (device->gen >= 4 && buffer->tiling)
> +			batch[i] |= XY_SRC_COPY_BLT_SRC_TILED;
> +		if (device->gen >= 4 && tiling)
> +			batch[i] |= XY_SRC_COPY_BLT_DST_TILED;
> +		batch[i++] |= 6 + 2 * has_64b_reloc;
> +		batch[i++] = 3 << 24 | 0xcc << 16 | pitch;
> +	}
>  	batch[i++] = 0;
>  	batch[i++] = buffer->height << 16 | buffer->width;
>  	reloc[0].target_handle = obj[0].handle;
> @@ -296,8 +305,7 @@ static bool blit_to_linear(const struct device *device,
>  	struct drm_i915_gem_relocation_entry reloc[2];
>  	struct drm_i915_gem_execbuffer2 execbuf;
>  	const bool has_64b_reloc = device->gen >= 8;
> -	uint32_t *batch;
> -	uint32_t pitch;
> +	uint32_t *batch, pitch, dword1;
>  	int i = 0;
>  
>  	igt_assert(buffer->tiling);
> @@ -352,14 +360,19 @@ static bool blit_to_linear(const struct device *device,
>  		batch[i++] = mask;
>  	}
>  
> -	batch[i] = (XY_SRC_COPY_BLT_CMD |
> -		    XY_SRC_COPY_BLT_WRITE_ALPHA |
> -		    XY_SRC_COPY_BLT_WRITE_RGB);
> -	if (device->gen >= 4 && buffer->tiling)
> -		batch[i] |= XY_SRC_COPY_BLT_SRC_TILED;
> -	batch[i++] |= 6 + 2 * has_64b_reloc;
> -
> -	batch[i++] = 3 << 24 | 0xcc << 16 | buffer->stride;
> +	if (!blt_has_xy_src_copy(device->fd)) {
> +		batch[i++] = fast_copy_dword0(buffer->tiling, I915_TILING_NONE);
> +		dword1 = fast_copy_dword1(buffer->tiling, I915_TILING_NONE, 32);
> +		batch[i++] = dword1 | buffer->stride;
> +	} else {
> +		batch[i] = (XY_SRC_COPY_BLT_CMD |
> +			    XY_SRC_COPY_BLT_WRITE_ALPHA |
> +			    XY_SRC_COPY_BLT_WRITE_RGB);
> +		if (device->gen >= 4 && buffer->tiling)
> +			batch[i] |= XY_SRC_COPY_BLT_SRC_TILED;
> +		batch[i++] |= 6 + 2 * has_64b_reloc;
> +		batch[i++] = 3 << 24 | 0xcc << 16 | buffer->stride;
> +	}
>  	batch[i++] = 0;
>  	batch[i++] = buffer->height << 16 | buffer->width;
>  	reloc[0].target_handle = obj[0].handle;
> @@ -598,8 +611,7 @@ blit(const struct device *device,
>  	struct drm_i915_gem_relocation_entry reloc[2];
>  	struct drm_i915_gem_execbuffer2 execbuf;
>  	const bool has_64b_reloc = device->gen >= 8;
> -	uint32_t *batch;
> -	uint32_t pitch;
> +	uint32_t *batch, dword1, pitch;
>  	int i = 0;
>  
>  	if (src_x < 0) {
> @@ -687,20 +699,25 @@ blit(const struct device *device,
>  		batch[i++] = mask;
>  	}
>  
> -	batch[i] = (XY_SRC_COPY_BLT_CMD |
> -		    XY_SRC_COPY_BLT_WRITE_ALPHA |
> -		    XY_SRC_COPY_BLT_WRITE_RGB);
> -	if (device->gen >= 4 && src->tiling)
> -		batch[i] |= XY_SRC_COPY_BLT_SRC_TILED;
> -	if (device->gen >= 4 && dst->tiling)
> -		batch[i] |= XY_SRC_COPY_BLT_DST_TILED;
> -	batch[i++] |= 6 + 2 * has_64b_reloc;
> -
>  	pitch = dst->stride;
>  	if (device->gen >= 4 && dst->tiling)
>  		pitch /= 4;
> -	batch[i++] = 3 << 24 | 0xcc << 16 | pitch;
>  
> +	if (!blt_has_xy_src_copy(device->fd)) {
> +		batch[i++] = fast_copy_dword0(src->tiling, dst->tiling);
> +		dword1 = fast_copy_dword1(src->tiling, dst->tiling, 32);
> +		batch[i++] = dword1 | pitch;
> +	} else {
> +		batch[i] = (XY_SRC_COPY_BLT_CMD |
> +			    XY_SRC_COPY_BLT_WRITE_ALPHA |
> +			    XY_SRC_COPY_BLT_WRITE_RGB);
> +		if (device->gen >= 4 && src->tiling)
> +			batch[i] |= XY_SRC_COPY_BLT_SRC_TILED;
> +		if (device->gen >= 4 && dst->tiling)
> +			batch[i] |= XY_SRC_COPY_BLT_DST_TILED;
> +		batch[i++] |= 6 + 2 * has_64b_reloc;
> +		batch[i++] = 3 << 24 | 0xcc << 16 | pitch;
> +	}
>  	batch[i++] = dst_y << 16 | dst_x;
>  	batch[i++] = (height + dst_y) << 16 | (width + dst_x);
>  	reloc[0].target_handle = obj[0].handle;
> @@ -792,6 +809,8 @@ igt_main
>  		struct buffer *src, *dst;
>  		unsigned int x, y;
>  
> +		devid = intel_get_drm_devid(device.fd);

Seems unused (+static on top).

With this fixed:

Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>

--
Zbigniew
> +
>  		for (unsigned int height = 1; height <= 16; height <<= 2) {
>  			for (unsigned int y0 = ZERO; y0 <= (height > 2 ? BELOW : ZERO); y0++) {
>  				for (unsigned int width = 1; width <= 64; width <<= 2) {
> -- 
> 2.25.1
> 

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

* Re: [igt-dev] [PATCH i-g-t v3 5/8] lib/intel_batchbuffer: Add wrapper API to use XY_FAST_COPY_BLT/XY_SRC_BLT
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 5/8] lib/intel_batchbuffer: Add wrapper API to use XY_FAST_COPY_BLT/XY_SRC_BLT Karolina Stolarek
@ 2023-03-15 10:45   ` Zbigniew Kempczyński
  0 siblings, 0 replies; 20+ messages in thread
From: Zbigniew Kempczyński @ 2023-03-15 10:45 UTC (permalink / raw)
  To: Karolina Stolarek; +Cc: igt-dev, Nirmoy Das

On Tue, Mar 14, 2023 at 03:44:37PM +0100, Karolina Stolarek wrote:
> From: Vikas Srivastava <vikas.srivastava@intel.com>
> 
> Add wrapper API in intel_batchbuffer to call respective copy functions
> for XY_FAST_COPY_BLT or XY_SRC_BLT based on platform on which its
> supported.
> 
> Signed-off-by: Vikas Srivastava <vikas.srivastava@intel.com>
> Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
> Cc: Nirmoy Das <nirmoy.das@intel.com>
> Cc: Andi Shyti <andi.shyti@linux.intel.com>
> ---
>  lib/intel_batchbuffer.c | 72 +++++++++++++++++++++++++++++++++++++++++
>  lib/intel_batchbuffer.h | 22 +++++++++++++
>  2 files changed, 94 insertions(+)
> 
> diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
> index a2bf5d2e..a5157194 100644
> --- a/lib/intel_batchbuffer.c
> +++ b/lib/intel_batchbuffer.c
> @@ -277,6 +277,78 @@ static uint32_t src_copy_dword1(uint32_t dst_pitch, uint32_t bpp)
>  	return dword1;
>  }
>  
> +/**
> + * igt_blitter_copy:
> + * @fd: file descriptor of the i915 driver
> + * @ahnd: handle to an allocator
> + * @ctx: context within which execute copy blit
> + * @src_handle: GEM handle of the source buffer
> + * @src_delta: offset into the source GEM bo, in bytes
> + * @src_stride: Stride (in bytes) of the source buffer
> + * @src_tiling: Tiling mode of the source buffer
> + * @src_x: X coordinate of the source region to copy
> + * @src_y: Y coordinate of the source region to copy
> + * @src_size: size of the src bo required for allocator and softpin
> + * @width: Width of the region to copy
> + * @height: Height of the region to copy
> + * @bpp: source and destination bits per pixel
> + * @dst_handle: GEM handle of the destination buffer
> + * @dst_delta: offset into the destination GEM bo, in bytes
> + * @dst_stride: Stride (in bytes) of the destination buffer
> + * @dst_tiling: Tiling mode of the destination buffer
> + * @dst_x: X coordinate of destination
> + * @dst_y: Y coordinate of destination
> + * @dst_size: size of the dst bo required for allocator and softpin
> + *
> + * Wrapper API to call appropriate blitter copy function.
> + */
> +
> +void igt_blitter_copy(int fd,
> +		      uint64_t ahnd,
> +		      uint32_t ctx,
> +		      const intel_ctx_cfg_t *cfg,
> +		      /* src */
> +		      uint32_t src_handle,
> +		      uint32_t src_delta,
> +		      uint32_t src_stride,
> +		      uint32_t src_tiling,
> +		      uint32_t src_x, uint32_t src_y,
> +		      uint64_t src_size,
> +		      /* size */
> +		      uint32_t width, uint32_t height,
> +		      /* bpp */
> +		      uint32_t bpp,
> +		      /* dst */
> +		      uint32_t dst_handle,
> +		      uint32_t dst_delta,
> +		      uint32_t dst_stride,
> +		      uint32_t dst_tiling,
> +		      uint32_t dst_x, uint32_t dst_y,
> +		      uint64_t dst_size)
> +{
> +	uint32_t devid;
> +
> +	devid = intel_get_drm_devid(fd);
> +
> +	if (intel_graphics_ver(devid) >= IP_VER(12, 60))
> +		igt_blitter_fast_copy__raw(fd, ahnd, ctx, NULL,
> +					   src_handle, src_delta,
> +					   src_stride, src_tiling,
> +					   src_x, src_y, src_size,
> +					   width, height, bpp,
> +					   dst_handle, dst_delta,
> +					   dst_stride, dst_tiling,
> +					   dst_x, dst_y, dst_size);
> +	else
> +		igt_blitter_src_copy(fd, ahnd, ctx, NULL,
> +				     src_handle, src_delta,
> +				     src_stride, src_tiling,
> +				     src_x, src_y, src_size,
> +				     width, height, bpp,
> +				     dst_handle, dst_delta,
> +				     dst_stride, dst_tiling,
> +				     dst_x, dst_y, dst_size);
> +}
>  /**
>   * igt_blitter_src_copy:
>   * @fd: file descriptor of the i915 driver
> diff --git a/lib/intel_batchbuffer.h b/lib/intel_batchbuffer.h
> index 81830d77..aed1d575 100644
> --- a/lib/intel_batchbuffer.h
> +++ b/lib/intel_batchbuffer.h
> @@ -36,6 +36,28 @@ uint32_t fast_copy_dword0(unsigned int src_tiling,
>  uint32_t fast_copy_dword1(unsigned int src_tiling,
>  			  unsigned int dst_tiling,
>  			  int bpp);
> +void igt_blitter_copy(int fd,
> +		      uint64_t ahnd,
> +		      uint32_t ctx,
> +		      const intel_ctx_cfg_t *cfg,
> +		      /* src */
> +		      uint32_t src_handle,
> +		      uint32_t src_delta,
> +		      uint32_t src_stride,
> +		      uint32_t src_tiling,
> +		      uint32_t src_x, uint32_t src_y,
> +		      uint64_t src_size,
> +		      /* size */
> +		      uint32_t width, uint32_t height,
> +		      /* bpp */
> +		      uint32_t bpp,
> +		      /* dst */
> +		      uint32_t dst_handle,
> +		      uint32_t dst_delta,
> +		      uint32_t dst_stride,
> +		      uint32_t dst_tiling,
> +		      uint32_t dst_x, uint32_t dst_y,
> +		      uint64_t dst_size);
>  
>  void igt_blitter_src_copy(int fd,
>  			  uint64_t ahnd,
> -- 
> 2.25.1
>

Good idea, we can decrease conditional code where we just need
to blit.

Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>

--
Zbigniew
 

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

* Re: [igt-dev] [PATCH i-g-t v3 6/8] tests/i915/gem_blits: Add XY_FAST_COPY_BLT support for gem_blits
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 6/8] tests/i915/gem_blits: Add XY_FAST_COPY_BLT support for gem_blits Karolina Stolarek
@ 2023-03-15 10:49   ` Zbigniew Kempczyński
  2023-03-15 15:11     ` Karolina Stolarek
  0 siblings, 1 reply; 20+ messages in thread
From: Zbigniew Kempczyński @ 2023-03-15 10:49 UTC (permalink / raw)
  To: Karolina Stolarek; +Cc: igt-dev, Nirmoy Das, Arjun Melkaveri

On Tue, Mar 14, 2023 at 03:44:38PM +0100, Karolina Stolarek wrote:
> From: Arjun Melkaveri <arjun.melkaveri@intel.com>
> 
> Test case uses legacy command XY_SRC_COPY_BLT_CMD which is not supported
> on newer generations. Modify test to use XY_FAST_COPY_BLT.

Description doesn't match the patch.

> 
> Signed-off-by: Arjun Melkaveri <arjun.melkaveri@intel.com>
> Signed-off-by: Vikas Srivastava <vikas.srivastava@intel.com>
> Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
> Cc: Nirmoy Das <nirmoy.das@intel.com>
> Cc: Andi Shyti <andi.shyti@linux.intel.com>
> ---
>  tests/i915/gem_blits.c | 21 +++++++++++++++++----
>  1 file changed, 17 insertions(+), 4 deletions(-)
> 
> diff --git a/tests/i915/gem_blits.c b/tests/i915/gem_blits.c
> index e5ef3662..b38d6c7e 100644
> --- a/tests/i915/gem_blits.c
> +++ b/tests/i915/gem_blits.c
> @@ -216,7 +216,12 @@ static void buffer_set_tiling(const struct device *device,
>  
>  	if (!blt_has_xy_src_copy(device->fd)) {
>  		batch[i++] = fast_copy_dword0(buffer->tiling, tiling);
> -		dword1 = fast_copy_dword1(buffer->tiling, tiling, 32);
> +		/* Post ATS-M platforms require tile4 bit to be set for YMAJOR mode */
> +		dword1 = fast_copy_dword1(buffer->tiling ?
> +					  I915_TILING_Yf : I915_TILING_NONE,
> +					  tiling ?
> +					  I915_TILING_Yf : I915_TILING_NONE,
> +					  32);
>  		batch[i++] = dword1 | pitch;
>  	} else {
>  		batch[i] = (XY_SRC_COPY_BLT_CMD |
> @@ -361,8 +366,11 @@ static bool blit_to_linear(const struct device *device,
>  	}
>  
>  	if (!blt_has_xy_src_copy(device->fd)) {
> -		batch[i++] = fast_copy_dword0(buffer->tiling, I915_TILING_NONE);
> -		dword1 = fast_copy_dword1(buffer->tiling, I915_TILING_NONE, 32);
> +		batch[i++] = fast_copy_dword0(buffer->tiling, 0);
> +		/* Post ATS-M platforms require tile4 bit to be set for YMAJOR mode */
> +		dword1 = fast_copy_dword1(buffer->tiling ?
> +					  I915_TILING_Yf : I915_TILING_NONE,
> +					  0, 32);

Is that comment adequate to fast_copy_dword1()? Where's tile4 bit set in this patch?

--
Zbigniew


>  		batch[i++] = dword1 | buffer->stride;
>  	} else {
>  		batch[i] = (XY_SRC_COPY_BLT_CMD |
> @@ -705,7 +713,12 @@ blit(const struct device *device,
>  
>  	if (!blt_has_xy_src_copy(device->fd)) {
>  		batch[i++] = fast_copy_dword0(src->tiling, dst->tiling);
> -		dword1 = fast_copy_dword1(src->tiling, dst->tiling, 32);
> +		/* Post ATS-M platforms require tile4 bit to be set for YMAJOR mode */
> +		dword1 = fast_copy_dword1(src->tiling ?
> +					  I915_TILING_Yf : I915_TILING_NONE,
> +					  dst->tiling ?
> +					  I915_TILING_Yf : I915_TILING_NONE,
> +					  32);
>  		batch[i++] = dword1 | pitch;
>  	} else {
>  		batch[i] = (XY_SRC_COPY_BLT_CMD |
> -- 
> 2.25.1
> 

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

* Re: [igt-dev] [PATCH i-g-t v3 7/8] lib/intel_cmds_info: Reorder blt_tiling_type enum
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 7/8] lib/intel_cmds_info: Reorder blt_tiling_type enum Karolina Stolarek
@ 2023-03-15 10:49   ` Zbigniew Kempczyński
  0 siblings, 0 replies; 20+ messages in thread
From: Zbigniew Kempczyński @ 2023-03-15 10:49 UTC (permalink / raw)
  To: Karolina Stolarek; +Cc: igt-dev

On Tue, Mar 14, 2023 at 03:44:39PM +0100, Karolina Stolarek wrote:
> Move Yf Major up so it follows the order of tiling definitions
> in intel_batchbuffer.h
> 
> Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
> Cc: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
> ---
>  lib/i915/intel_cmds_info.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/lib/i915/intel_cmds_info.h b/lib/i915/intel_cmds_info.h
> index 57e34c4b..9af2f2d9 100644
> --- a/lib/i915/intel_cmds_info.h
> +++ b/lib/i915/intel_cmds_info.h
> @@ -13,8 +13,8 @@ enum blt_tiling_type {
>  	T_XMAJOR,
>  	T_YMAJOR,
>  	T_TILE4,
> -	T_TILE64,
>  	T_YFMAJOR,
> +	T_TILE64,
>  	__BLT_MAX_TILING
>  };
>  
> -- 
> 2.25.1
> 

Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>

--
Zbigniew

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

* Re: [igt-dev] [PATCH i-g-t v3 8/8] tests/gem_blits: Use intel_cmds_info library
  2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 8/8] tests/gem_blits: Use intel_cmds_info library Karolina Stolarek
@ 2023-03-15 10:54   ` Zbigniew Kempczyński
  0 siblings, 0 replies; 20+ messages in thread
From: Zbigniew Kempczyński @ 2023-03-15 10:54 UTC (permalink / raw)
  To: Karolina Stolarek; +Cc: igt-dev

On Tue, Mar 14, 2023 at 03:44:40PM +0100, Karolina Stolarek wrote:
> Update the test to use blt_tiling_type values. Make it skip
> if a copy command doesn't support a specific tiling format.
> 
> Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
> Cc: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
> ---
>  lib/i915/i915_blt.c    |  6 ++++
>  tests/i915/gem_blits.c | 66 +++++++++++++++++++++++++-----------------
>  2 files changed, 46 insertions(+), 26 deletions(-)
> 
> diff --git a/lib/i915/i915_blt.c b/lib/i915/i915_blt.c
> index 13105820..ef67fe26 100644
> --- a/lib/i915/i915_blt.c
> +++ b/lib/i915/i915_blt.c
> @@ -16,6 +16,12 @@
>  #define BITRANGE(start, end) (end - start + 1)
>  #define GET_CMDS_INFO(__fd) intel_get_cmds_info(intel_get_drm_devid(__fd))
>  
> +/* Blitter tiling definitions sanity checks */
> +static_assert(T_LINEAR == I915_TILING_NONE, "Linear definitions have to match");
> +static_assert(T_XMAJOR == I915_TILING_X, "TileX definitions have to match");
> +static_assert(T_YMAJOR == I915_TILING_Y, "TileY definitions have to match");
> +static_assert(T_YFMAJOR == I915_TILING_Yf, "TileYf definitions have to match");
> +
>  enum blt_special_mode {
>  	SM_NONE,
>  	SM_FULL_RESOLVE,
> diff --git a/tests/i915/gem_blits.c b/tests/i915/gem_blits.c
> index b38d6c7e..4aa8624c 100644
> --- a/tests/i915/gem_blits.c
> +++ b/tests/i915/gem_blits.c
> @@ -72,7 +72,7 @@ get_tiling_stride(const struct device *device,
>  	if (tiling) {
>  		if (device->gen < 3)
>  			stride = ALIGN(stride, 128);
> -		else if (device->gen < 4 || tiling == I915_TILING_X)
> +		else if (device->gen < 4 || tiling == T_XMAJOR)
>  			stride = ALIGN(stride, 512);
>  		else
>  			stride = ALIGN(stride, 128);
> @@ -96,7 +96,7 @@ get_tiling_height(const struct device *device,
>  
>  	if (device->gen < 3)
>  		return ALIGN(height, 16);
> -	else if (device->gen < 4 || tiling == I915_TILING_X)
> +	else if (device->gen < 4 || tiling == T_XMAJOR)
>  		return ALIGN(height, 8);
>  	else
>  		return ALIGN(height, 32);
> @@ -117,8 +117,8 @@ static struct buffer *buffer_create(const struct device *device,
>  	buffer->width = width;
>  	buffer->height = height;
>  
> -	buffer->tiling = I915_TILING_NONE;
> -	buffer->stride = get_tiling_stride(device, width, I915_TILING_NONE);
> +	buffer->tiling = T_LINEAR;
> +	buffer->stride = get_tiling_stride(device, width, T_LINEAR);
>  	buffer->size = ALIGN(buffer->stride * height, 4096);
>  	buffer->handle = gem_create(device->fd, buffer->size);
>  	buffer->caching = device->llc;
> @@ -196,16 +196,16 @@ static void buffer_set_tiling(const struct device *device,
>  
>  	i = 0;
>  
> -	if ((tiling | buffer->tiling) >= I915_TILING_Y) {
> +	if ((tiling | buffer->tiling) >= T_YMAJOR) {
>  		unsigned int mask;
>  
>  		batch[i++] = MI_LOAD_REGISTER_IMM(1);
>  		batch[i++] = BCS_SWCTRL;
>  
>  		mask = (BCS_SRC_Y | BCS_DST_Y) << 16;
> -		if (buffer->tiling == I915_TILING_Y)
> +		if (buffer->tiling == T_YMAJOR)
>  			mask |= BCS_SRC_Y;
> -		if (tiling == I915_TILING_Y)
> +		if (tiling == T_YMAJOR)
>  			mask |= BCS_DST_Y;
>  		batch[i++] = mask;
>  	}
> @@ -218,9 +218,9 @@ static void buffer_set_tiling(const struct device *device,
>  		batch[i++] = fast_copy_dword0(buffer->tiling, tiling);
>  		/* Post ATS-M platforms require tile4 bit to be set for YMAJOR mode */
>  		dword1 = fast_copy_dword1(buffer->tiling ?
> -					  I915_TILING_Yf : I915_TILING_NONE,
> +					  T_YFMAJOR : T_LINEAR,
>  					  tiling ?
> -					  I915_TILING_Yf : I915_TILING_NONE,
> +					  T_YFMAJOR : T_LINEAR,
>  					  32);
>  		batch[i++] = dword1 | pitch;
>  	} else {
> @@ -258,7 +258,7 @@ static void buffer_set_tiling(const struct device *device,
>  	if (has_64b_reloc)
>  		batch[i++] = obj[1].offset >> 32;
>  
> -	if ((tiling | buffer->tiling) >= I915_TILING_Y) {
> +	if ((tiling | buffer->tiling) >= T_YMAJOR) {
>  		igt_assert(device->gen >= 6);
>  		batch[i++] = MI_FLUSH_DW_CMD | 2;
>  		batch[i++] = 0;
> @@ -353,14 +353,14 @@ static bool blit_to_linear(const struct device *device,
>  
>  	batch = gem_mmap__cpu(device->fd, obj[2].handle, 0, 4096, PROT_WRITE);
>  
> -	if (buffer->tiling >= I915_TILING_Y) {
> +	if (buffer->tiling >= T_YMAJOR) {
>  		unsigned int mask;
>  
>  		batch[i++] = MI_LOAD_REGISTER_IMM(1);
>  		batch[i++] = BCS_SWCTRL;
>  
>  		mask = (BCS_SRC_Y | BCS_DST_Y) << 16;
> -		if (buffer->tiling == I915_TILING_Y)
> +		if (buffer->tiling == T_YMAJOR)
>  			mask |= BCS_SRC_Y;
>  		batch[i++] = mask;
>  	}
> @@ -369,7 +369,7 @@ static bool blit_to_linear(const struct device *device,
>  		batch[i++] = fast_copy_dword0(buffer->tiling, 0);
>  		/* Post ATS-M platforms require tile4 bit to be set for YMAJOR mode */
>  		dword1 = fast_copy_dword1(buffer->tiling ?
> -					  I915_TILING_Yf : I915_TILING_NONE,
> +					  T_YFMAJOR : T_LINEAR,
>  					  0, 32);
>  		batch[i++] = dword1 | buffer->stride;
>  	} else {
> @@ -405,7 +405,7 @@ static bool blit_to_linear(const struct device *device,
>  	if (has_64b_reloc)
>  		batch[i++] = obj[1].offset >> 32;
>  
> -	if (buffer->tiling >= I915_TILING_Y) {
> +	if (buffer->tiling >= T_YMAJOR) {
>  		igt_assert(device->gen >= 6);
>  		batch[i++] = MI_FLUSH_DW_CMD | 2;
>  		batch[i++] = 0;
> @@ -693,16 +693,16 @@ blit(const struct device *device,
>  	}
>  	batch = gem_mmap__cpu(device->fd, obj[2].handle, 0, 4096, PROT_WRITE);
>  
> -	if ((src->tiling | dst->tiling) >= I915_TILING_Y) {
> +	if ((src->tiling | dst->tiling) >= T_YMAJOR) {
>  		unsigned int mask;
>  
>  		batch[i++] = MI_LOAD_REGISTER_IMM(1);
>  		batch[i++] = BCS_SWCTRL;
>  
>  		mask = (BCS_SRC_Y | BCS_DST_Y) << 16;
> -		if (src->tiling == I915_TILING_Y)
> +		if (src->tiling == T_YMAJOR)
>  			mask |= BCS_SRC_Y;
> -		if (dst->tiling == I915_TILING_Y)
> +		if (dst->tiling == T_YMAJOR)
>  			mask |= BCS_DST_Y;
>  		batch[i++] = mask;
>  	}
> @@ -715,9 +715,9 @@ blit(const struct device *device,
>  		batch[i++] = fast_copy_dword0(src->tiling, dst->tiling);
>  		/* Post ATS-M platforms require tile4 bit to be set for YMAJOR mode */
>  		dword1 = fast_copy_dword1(src->tiling ?
> -					  I915_TILING_Yf : I915_TILING_NONE,
> +					  T_YFMAJOR : T_LINEAR,
>  					  dst->tiling ?
> -					  I915_TILING_Yf : I915_TILING_NONE,
> +					  T_YFMAJOR : T_LINEAR,
>  					  32);
>  		batch[i++] = dword1 | pitch;
>  	} else {
> @@ -755,7 +755,7 @@ blit(const struct device *device,
>  	if (has_64b_reloc)
>  		batch[i++] = obj[1].offset >> 32;
>  
> -	if ((src->tiling | dst->tiling) >= I915_TILING_Y) {
> +	if ((src->tiling | dst->tiling) >= T_YMAJOR) {
>  		igt_assert(device->gen >= 6);
>  		batch[i++] = MI_FLUSH_DW_CMD | 2;
>  		batch[i++] = 0;
> @@ -803,6 +803,15 @@ static int start_at(int x, enum start s)
>  	}
>  }
>  
> +static bool blit_supports_tiling(int fd, enum blt_tiling_type tiling)
> +{
> +	if (blt_has_xy_src_copy(fd))
> +		return blt_xy_src_copy_supports_tiling(fd, tiling);
> +
> +	/* Test is run on newer platform, so check fast-copy support instead */
> +	return blt_fast_copy_supports_tiling(fd, tiling);
> +}
> +
>  igt_main
>  {
>  	struct device device;
> @@ -835,15 +844,20 @@ igt_main
>  								    width * 16, height * 4);
>  
>  						y = start_at(height, y0);
> -						for (unsigned int src_tiling = I915_TILING_NONE;
> -						     src_tiling <= (device.gen >= 6 ? I915_TILING_Y : I915_TILING_X);
> -						     src_tiling++) {
> +
> +						for (unsigned int src_tiling = T_LINEAR;
> +						     src_tiling <= T_YMAJOR; src_tiling++) {
> +							if (!blit_supports_tiling(device.fd, src_tiling))
> +								continue;
> +
>  							buffer_set_tiling(&device, src, src_tiling);
>  
>  							x = start_at(width, x0);
> -							for (unsigned int dst_tiling = I915_TILING_NONE;
> -							     dst_tiling <= (device.gen >= 6 ? I915_TILING_Y : I915_TILING_X);
> -							     dst_tiling++) {
> +							for (unsigned int dst_tiling = T_LINEAR;
> +							     dst_tiling <= T_YMAJOR; dst_tiling++) {
> +								if (!blit_supports_tiling(device.fd, dst_tiling))
> +									continue;
> +
>  								buffer_set_tiling(&device, dst, dst_tiling);
>  
>  								for (enum mode down = CPU; down <= WC; down++) {
> -- 
> 2.25.1
> 

Ok, this looks good:

Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>

--
Zbigniew

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

* Re: [igt-dev] [PATCH i-g-t v3 6/8] tests/i915/gem_blits: Add XY_FAST_COPY_BLT support for gem_blits
  2023-03-15 10:49   ` Zbigniew Kempczyński
@ 2023-03-15 15:11     ` Karolina Stolarek
  0 siblings, 0 replies; 20+ messages in thread
From: Karolina Stolarek @ 2023-03-15 15:11 UTC (permalink / raw)
  To: Zbigniew Kempczyński; +Cc: igt-dev

On 15.03.2023 11:49, Zbigniew Kempczyński wrote:
> On Tue, Mar 14, 2023 at 03:44:38PM +0100, Karolina Stolarek wrote:
>> From: Arjun Melkaveri <arjun.melkaveri@intel.com>
>>
>> Test case uses legacy command XY_SRC_COPY_BLT_CMD which is not supported
>> on newer generations. Modify test to use XY_FAST_COPY_BLT.
> 
> Description doesn't match the patch.

Huh, you're right, that's an oversight on my part. Will correct it in 
the next version.

> 
>>
>> Signed-off-by: Arjun Melkaveri <arjun.melkaveri@intel.com>
>> Signed-off-by: Vikas Srivastava <vikas.srivastava@intel.com>
>> Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
>> Cc: Nirmoy Das <nirmoy.das@intel.com>
>> Cc: Andi Shyti <andi.shyti@linux.intel.com>
>> ---
>>   tests/i915/gem_blits.c | 21 +++++++++++++++++----
>>   1 file changed, 17 insertions(+), 4 deletions(-)
>>
>> diff --git a/tests/i915/gem_blits.c b/tests/i915/gem_blits.c
>> index e5ef3662..b38d6c7e 100644
>> --- a/tests/i915/gem_blits.c
>> +++ b/tests/i915/gem_blits.c
>> @@ -216,7 +216,12 @@ static void buffer_set_tiling(const struct device *device,
>>   
>>   	if (!blt_has_xy_src_copy(device->fd)) {
>>   		batch[i++] = fast_copy_dword0(buffer->tiling, tiling);
>> -		dword1 = fast_copy_dword1(buffer->tiling, tiling, 32);
>> +		/* Post ATS-M platforms require tile4 bit to be set for YMAJOR mode */
>> +		dword1 = fast_copy_dword1(buffer->tiling ?
>> +					  I915_TILING_Yf : I915_TILING_NONE,
>> +					  tiling ?
>> +					  I915_TILING_Yf : I915_TILING_NONE,
>> +					  32);
>>   		batch[i++] = dword1 | pitch;
>>   	} else {
>>   		batch[i] = (XY_SRC_COPY_BLT_CMD |
>> @@ -361,8 +366,11 @@ static bool blit_to_linear(const struct device *device,
>>   	}
>>   
>>   	if (!blt_has_xy_src_copy(device->fd)) {
>> -		batch[i++] = fast_copy_dword0(buffer->tiling, I915_TILING_NONE);
>> -		dword1 = fast_copy_dword1(buffer->tiling, I915_TILING_NONE, 32);
>> +		batch[i++] = fast_copy_dword0(buffer->tiling, 0);
>> +		/* Post ATS-M platforms require tile4 bit to be set for YMAJOR mode */
>> +		dword1 = fast_copy_dword1(buffer->tiling ?
>> +					  I915_TILING_Yf : I915_TILING_NONE,
>> +					  0, 32);
> 
> Is that comment adequate to fast_copy_dword1()? Where's tile4 bit set in this patch?

In dw1, we set bits 31 and 30 to specify if we're using new TileY format 
(i.e. Tile4). MTL doesn't support the legacy format, so we have to 
override it here. Come to think of it, we could write something like:

dword1 = fast_copy_dword1(src->tiling == T_YMAJOR,
			  dst->tiling == T_YMAJOR, 32);

to set the required bits.

Thoughts?


All the best,
Karolina
> 
> --
> Zbigniew
> 
> 
>>   		batch[i++] = dword1 | buffer->stride;
>>   	} else {
>>   		batch[i] = (XY_SRC_COPY_BLT_CMD |
>> @@ -705,7 +713,12 @@ blit(const struct device *device,
>>   
>>   	if (!blt_has_xy_src_copy(device->fd)) {
>>   		batch[i++] = fast_copy_dword0(src->tiling, dst->tiling);
>> -		dword1 = fast_copy_dword1(src->tiling, dst->tiling, 32);
>> +		/* Post ATS-M platforms require tile4 bit to be set for YMAJOR mode */
>> +		dword1 = fast_copy_dword1(src->tiling ?
>> +					  I915_TILING_Yf : I915_TILING_NONE,
>> +					  dst->tiling ?
>> +					  I915_TILING_Yf : I915_TILING_NONE,
>> +					  32);
>>   		batch[i++] = dword1 | pitch;
>>   	} else {
>>   		batch[i] = (XY_SRC_COPY_BLT_CMD |
>> -- 
>> 2.25.1
>>

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

* [igt-dev] ✓ Fi.CI.IGT: success for Update gem_blits for newer generations (rev3)
  2023-03-14 14:44 [igt-dev] [PATCH i-g-t v3 0/8] Update gem_blits for newer generations Karolina Stolarek
                   ` (8 preceding siblings ...)
  2023-03-14 16:13 ` [igt-dev] ✓ Fi.CI.BAT: success for Update gem_blits for newer generations (rev3) Patchwork
@ 2023-03-15 20:05 ` Patchwork
  9 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2023-03-15 20:05 UTC (permalink / raw)
  To: Karolina Stolarek; +Cc: igt-dev

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

== Series Details ==

Series: Update gem_blits for newer generations (rev3)
URL   : https://patchwork.freedesktop.org/series/114776/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_12857_full -> IGTPW_8605_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

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

  Missing    (1): shard-tglu0 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_8605_full:

### IGT changes ###

#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@i915_suspend@basic-s3-without-i915:
    - {shard-tglu}:       NOTRUN -> [INCOMPLETE][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-tglu-7/igt@i915_suspend@basic-s3-without-i915.html

  * {igt@kms_plane@invalid-pixel-format-settings}:
    - {shard-tglu}:       [PASS][2] -> [SKIP][3]
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-tglu-3/igt@kms_plane@invalid-pixel-format-settings.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-tglu-10/igt@kms_plane@invalid-pixel-format-settings.html

  * {igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-0-25}:
    - {shard-tglu}:       NOTRUN -> [SKIP][4] +1 similar issue
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-tglu-10/igt@kms_plane_scaling@planes-downscale-factor-0-5-upscale-0-25.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_fair@basic-throttle@rcs0:
    - shard-glk:          [PASS][5] -> [FAIL][6] ([i915#2842])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-glk6/igt@gem_exec_fair@basic-throttle@rcs0.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-glk8/igt@gem_exec_fair@basic-throttle@rcs0.html

  * igt@gem_exec_reloc@basic-wc-gtt-active:
    - shard-apl:          [PASS][7] -> [DMESG-WARN][8] ([i915#62]) +24 similar issues
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-apl3/igt@gem_exec_reloc@basic-wc-gtt-active.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-apl6/igt@gem_exec_reloc@basic-wc-gtt-active.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
    - shard-apl:          [PASS][9] -> [FAIL][10] ([i915#2346])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-apl1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-apl3/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
    - shard-glk:          [PASS][11] -> [FAIL][12] ([i915#2346])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-glk1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-glk1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html

  * igt@kms_flip@2x-flip-vs-expired-vblank@bc-hdmi-a1-hdmi-a2:
    - shard-glk:          [PASS][13] -> [FAIL][14] ([i915#79]) +1 similar issue
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-glk7/igt@kms_flip@2x-flip-vs-expired-vblank@bc-hdmi-a1-hdmi-a2.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-glk8/igt@kms_flip@2x-flip-vs-expired-vblank@bc-hdmi-a1-hdmi-a2.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite:
    - shard-apl:          [PASS][15] -> [DMESG-WARN][16] ([i915#1982] / [i915#62])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-apl6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-apl6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite.html

  
#### Possible fixes ####

  * igt@device_reset@unbind-reset-rebind:
    - {shard-rkl}:        [FAIL][17] ([i915#4778]) -> [PASS][18]
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-5/igt@device_reset@unbind-reset-rebind.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-2/igt@device_reset@unbind-reset-rebind.html

  * igt@drm_fdinfo@idle@rcs0:
    - {shard-rkl}:        [FAIL][19] ([i915#7742]) -> [PASS][20]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-1/igt@drm_fdinfo@idle@rcs0.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-6/igt@drm_fdinfo@idle@rcs0.html

  * igt@fbdev@nullptr:
    - {shard-rkl}:        [SKIP][21] ([i915#2582]) -> [PASS][22] +1 similar issue
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-2/igt@fbdev@nullptr.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-6/igt@fbdev@nullptr.html

  * igt@feature_discovery@psr2:
    - {shard-rkl}:        [SKIP][23] ([i915#658]) -> [PASS][24]
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-4/igt@feature_discovery@psr2.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-6/igt@feature_discovery@psr2.html

  * igt@gem_ctx_exec@basic-nohangcheck:
    - {shard-rkl}:        [FAIL][25] ([i915#6268]) -> [PASS][26]
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-4/igt@gem_ctx_exec@basic-nohangcheck.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-2/igt@gem_ctx_exec@basic-nohangcheck.html

  * igt@gem_ctx_persistence@engines-hang@bcs0:
    - {shard-rkl}:        [SKIP][27] ([i915#6252]) -> [PASS][28]
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-5/igt@gem_ctx_persistence@engines-hang@bcs0.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-1/igt@gem_ctx_persistence@engines-hang@bcs0.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_12857/shard-dg1-15/igt@gem_eio@kms.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-dg1-14/igt@gem_eio@kms.html

  * igt@gem_exec_fair@basic-deadline:
    - {shard-rkl}:        [FAIL][31] ([i915#2846]) -> [PASS][32]
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-2/igt@gem_exec_fair@basic-deadline.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-1/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - {shard-tglu}:       [FAIL][33] ([i915#2842]) -> [PASS][34]
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-tglu-3/igt@gem_exec_fair@basic-none-share@rcs0.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-tglu-3/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-glk:          [FAIL][35] ([i915#2842]) -> [PASS][36] +1 similar issue
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-glk4/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-glk3/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_fair@basic-pace@rcs0:
    - {shard-rkl}:        [FAIL][37] ([i915#2842]) -> [PASS][38] +5 similar issues
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-4/igt@gem_exec_fair@basic-pace@rcs0.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-5/igt@gem_exec_fair@basic-pace@rcs0.html

  * igt@gem_exec_reloc@basic-write-read-active:
    - {shard-rkl}:        [SKIP][39] ([i915#3281]) -> [PASS][40] +6 similar issues
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-1/igt@gem_exec_reloc@basic-write-read-active.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-5/igt@gem_exec_reloc@basic-write-read-active.html

  * igt@gem_userptr_blits@forbidden-operations:
    - {shard-rkl}:        [SKIP][41] ([i915#3282]) -> [PASS][42] +5 similar issues
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-6/igt@gem_userptr_blits@forbidden-operations.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-5/igt@gem_userptr_blits@forbidden-operations.html

  * igt@gen9_exec_parse@bb-chained:
    - {shard-rkl}:        [SKIP][43] ([i915#2527]) -> [PASS][44] +2 similar issues
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-1/igt@gen9_exec_parse@bb-chained.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-5/igt@gen9_exec_parse@bb-chained.html

  * igt@i915_pm_rpm@modeset-lpsp-stress-no-wait:
    - {shard-rkl}:        [SKIP][45] ([i915#1397]) -> [PASS][46]
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-2/igt@i915_pm_rpm@modeset-lpsp-stress-no-wait.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-6/igt@i915_pm_rpm@modeset-lpsp-stress-no-wait.html

  * igt@i915_selftest@live@dmabuf:
    - shard-apl:          [DMESG-FAIL][47] ([i915#7562]) -> [PASS][48]
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-apl2/igt@i915_selftest@live@dmabuf.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-apl6/igt@i915_selftest@live@dmabuf.html

  * igt@kms_atomic@atomic_plane_damage:
    - {shard-rkl}:        [SKIP][49] ([i915#4098]) -> [PASS][50]
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-2/igt@kms_atomic@atomic_plane_damage.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-6/igt@kms_atomic@atomic_plane_damage.html

  * igt@kms_ccs@pipe-b-bad-aux-stride-y_tiled_gen12_rc_ccs:
    - {shard-rkl}:        [SKIP][51] ([i915#1845] / [i915#4098]) -> [PASS][52] +17 similar issues
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-1/igt@kms_ccs@pipe-b-bad-aux-stride-y_tiled_gen12_rc_ccs.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-6/igt@kms_ccs@pipe-b-bad-aux-stride-y_tiled_gen12_rc_ccs.html

  * igt@kms_ccs@pipe-c-bad-aux-stride-y_tiled_gen12_rc_ccs:
    - {shard-tglu}:       [SKIP][53] ([i915#1845] / [i915#7651]) -> [PASS][54] +27 similar issues
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-tglu-9/igt@kms_ccs@pipe-c-bad-aux-stride-y_tiled_gen12_rc_ccs.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-tglu-3/igt@kms_ccs@pipe-c-bad-aux-stride-y_tiled_gen12_rc_ccs.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
    - shard-apl:          [FAIL][55] ([i915#2346]) -> [PASS][56]
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-apl3/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-apl1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-apl:          [FAIL][57] ([i915#4767]) -> [PASS][58]
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-apl6/igt@kms_fbcon_fbt@fbc-suspend.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-apl7/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_fence_pin_leak:
    - {shard-tglu}:       [SKIP][59] ([fdo#109274] / [i915#1845]) -> [PASS][60]
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-tglu-9/igt@kms_fence_pin_leak.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-tglu-8/igt@kms_fence_pin_leak.html

  * igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary:
    - {shard-rkl}:        [SKIP][61] ([i915#1849] / [i915#4098]) -> [PASS][62] +14 similar issues
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-2/igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary.html

  * igt@kms_frontbuffer_tracking@fbc-tiling-linear:
    - {shard-tglu}:       [SKIP][63] ([i915#1849]) -> [PASS][64] +6 similar issues
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-tglu-9/igt@kms_frontbuffer_tracking@fbc-tiling-linear.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-tglu-8/igt@kms_frontbuffer_tracking@fbc-tiling-linear.html

  * igt@kms_plane@plane-panning-bottom-right@pipe-a-planes:
    - {shard-rkl}:        [SKIP][65] ([i915#1849]) -> [PASS][66] +3 similar issues
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-1/igt@kms_plane@plane-panning-bottom-right@pipe-a-planes.html
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-6/igt@kms_plane@plane-panning-bottom-right@pipe-a-planes.html

  * igt@kms_psr@cursor_render:
    - {shard-rkl}:        [SKIP][67] ([i915#1072]) -> [PASS][68] +1 similar issue
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-1/igt@kms_psr@cursor_render.html
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-6/igt@kms_psr@cursor_render.html

  * igt@kms_rotation_crc@cursor-rotation-180:
    - {shard-tglu}:       [SKIP][69] ([i915#1845]) -> [PASS][70] +1 similar issue
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-tglu-9/igt@kms_rotation_crc@cursor-rotation-180.html
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-tglu-4/igt@kms_rotation_crc@cursor-rotation-180.html

  * igt@kms_universal_plane@cursor-fb-leak-pipe-a:
    - {shard-rkl}:        [SKIP][71] ([i915#1845] / [i915#4070] / [i915#4098]) -> [PASS][72]
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-2/igt@kms_universal_plane@cursor-fb-leak-pipe-a.html
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-6/igt@kms_universal_plane@cursor-fb-leak-pipe-a.html

  * igt@kms_universal_plane@universal-plane-pipe-d-functional:
    - {shard-tglu}:       [SKIP][73] ([fdo#109274]) -> [PASS][74] +1 similar issue
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-tglu-9/igt@kms_universal_plane@universal-plane-pipe-d-functional.html
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-tglu-8/igt@kms_universal_plane@universal-plane-pipe-d-functional.html

  * igt@prime_self_import@basic-with_one_bo:
    - {shard-rkl}:        [SKIP][75] ([fdo#109315]) -> [PASS][76] +3 similar issues
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-5/igt@prime_self_import@basic-with_one_bo.html
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-2/igt@prime_self_import@basic-with_one_bo.html

  * igt@prime_vgem@basic-read:
    - {shard-rkl}:        [SKIP][77] ([fdo#109295] / [i915#3291] / [i915#3708]) -> [PASS][78]
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-4/igt@prime_vgem@basic-read.html
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-5/igt@prime_vgem@basic-read.html

  * igt@prime_vgem@coherency-gtt:
    - {shard-rkl}:        [SKIP][79] ([fdo#109295] / [fdo#111656] / [i915#3708]) -> [PASS][80]
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-2/igt@prime_vgem@coherency-gtt.html
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-5/igt@prime_vgem@coherency-gtt.html

  * igt@syncobj_timeline@wait-all-for-submit-delayed-submit:
    - {shard-rkl}:        [SKIP][81] ([i915#2575]) -> [PASS][82] +2 similar issues
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-rkl-5/igt@syncobj_timeline@wait-all-for-submit-delayed-submit.html
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-rkl-3/igt@syncobj_timeline@wait-all-for-submit-delayed-submit.html

  * igt@sysfs_heartbeat_interval@precise@vcs0:
    - {shard-dg1}:        [FAIL][83] ([i915#1755]) -> [PASS][84] +2 similar issues
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12857/shard-dg1-15/igt@sysfs_heartbeat_interval@precise@vcs0.html
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/shard-dg1-14/igt@sysfs_heartbeat_interval@precise@vcs0.html

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

  [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#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506
  [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
  [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#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111656]: https://bugs.freedesktop.org/show_bug.cgi?id=111656
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [fdo#112054]: https://bugs.freedesktop.org/show_bug.cgi?id=112054
  [fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1257]: https://gitlab.freedesktop.org/drm/intel/issues/1257
  [i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#1722]: https://gitlab.freedesktop.org/drm/intel/issues/1722
  [i915#1755]: https://gitlab.freedesktop.org/drm/intel/issues/1755
  [i915#1769]: https://gitlab.freedesktop.org/drm/intel/issues/1769
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839
  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#1937]: https://gitlab.freedesktop.org/drm/intel/issues/1937
  [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2434]: https://gitlab.freedesktop.org/drm/intel/issues/2434
  [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
  [i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
  [i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587
  [i915#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705
  [i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280
  [i915#284]: https://gitlab.freedesktop.org/drm/intel/issues/284
  [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#2920]: https://gitlab.freedesktop.org/drm/intel/issues/2920
  [i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116
  [i915#315]: https://gitlab.freedesktop.org/drm/intel/issues/315
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
  [i915#3318]: https://gitlab.freedesktop.org/drm/intel/issues/3318
  [i915#3323]: https://gitlab.freedesktop.org/drm/intel/issues/3323
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3469]: https://gitlab.freedesktop.org/drm/intel/issues/3469
  [i915#3528]: https://gitlab.freedesktop.org/drm/intel/issues/3528
  [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3558]: https://gitlab.freedesktop.org/drm/intel/issues/3558
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
  [i915#3639]: https://gitlab.freedesktop.org/drm/intel/issues/3639
  [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734
  [i915#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742
  [i915#3826]: https://gitlab.freedesktop.org/drm/intel/issues/3826
  [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3936]: https://gitlab.freedesktop.org/drm/intel/issues/3936
  [i915#3952]: https://gitlab.freedesktop.org/drm/intel/issues/3952
  [i915#3989]: https://gitlab.freedesktop.org/drm/intel/issues/3989
  [i915#4036]: https://gitlab.freedesktop.org/drm/intel/issues/4036
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
  [i915#4215]: https://gitlab.freedesktop.org/drm/intel/issues/4215
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4281]: https://gitlab.freedesktop.org/drm/intel/issues/4281
  [i915#4387]: https://gitlab.freedesktop.org/drm/intel/issues/4387
  [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
  [i915#4565]: https://gitlab.freedesktop.org/drm/intel/issues/4565
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4767]: https://gitlab.freedesktop.org/drm/intel/issues/4767
  [i915#4771]: https://gitlab.freedesktop.org/drm/intel/issues/4771
  [i915#4778]: https://gitlab.freedesktop.org/drm/intel/issues/4778
  [i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812
  [i915#4833]: https://gitlab.freedesktop.org/drm/intel/issues/4833
  [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
  [i915#4859]: https://gitlab.freedesktop.org/drm/intel/issues/4859
  [i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860
  [i915#4879]: https://gitlab.freedesktop.org/drm/intel/issues/4879
  [i915#4880]: https://gitlab.freedesktop.org/drm/intel/issues/4880
  [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#5288]: https://gitlab.freedesktop.org/drm/intel/issues/5288
  [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#5439]: https://gitlab.freedesktop.org/drm/intel/issues/5439
  [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
  [i915#5563]: https://gitlab.freedesktop.org/drm/intel/issues/5563
  [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6117]: https://gitlab.freedesktop.org/drm/intel/issues/6117
  [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
  [i915#6247]: https://gitlab.freedesktop.org/drm/intel/issues/6247
  [i915#6248]: https://gitlab.freedesktop.org/drm/intel/issues/6248
  [i915#6252]: https://gitlab.freedesktop.org/drm/intel/issues/6252
  [i915#6268]: https://gitlab.freedesktop.org/drm/intel/issues/6268
  [i915#6301]: https://gitlab.freedesktop.org/drm/intel/issues/6301
  [i915#6355]: https://gitlab.freedesktop.org/drm/intel/issues/6355
  [i915#6433]: https://gitlab.freedesktop.org/drm/intel/issues/6433
  [i915#6497]: https://gitlab.freedesktop.org/drm/intel/issues/6497
  [i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
  [i915#6768]: https://gitlab.freedesktop.org/drm/intel/issues/6768
  [i915#6944]: https://gitlab.freedesktop.org/drm/intel/issues/6944
  [i915#6946]: https://gitlab.freedesktop.org/drm/intel/issues/6946
  [i915#6953]: https://gitlab.freedesktop.org/drm/intel/issues/6953
  [i915#7037]: https://gitlab.freedesktop.org/drm/intel/issues/7037
  [i915#7116]: https://gitlab.freedesktop.org/drm/intel/issues/7116
  [i915#7118]: https://gitlab.freedesktop.org/drm/intel/issues/7118
  [i915#7128]: https://gitlab.freedesktop.org/drm/intel/issues/7128
  [i915#7294]: https://gitlab.freedesktop.org/drm/intel/issues/7294
  [i915#7561]: https://gitlab.freedesktop.org/drm/intel/issues/7561
  [i915#7562]: https://gitlab.freedesktop.org/drm/intel/issues/7562
  [i915#7651]: https://gitlab.freedesktop.org/drm/intel/issues/7651
  [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697
  [i915#7701]: https://gitlab.freedesktop.org/drm/intel/issues/7701
  [i915#7707]: https://gitlab.freedesktop.org/drm/intel/issues/7707
  [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
  [i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
  [i915#7949]: https://gitlab.freedesktop.org/drm/intel/issues/7949
  [i915#7957]: https://gitlab.freedesktop.org/drm/intel/issues/7957
  [i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975
  [i915#8152]: https://gitlab.freedesktop.org/drm/intel/issues/8152
  [i915#8228]: https://gitlab.freedesktop.org/drm/intel/issues/8228
  [i915#8273]: https://gitlab.freedesktop.org/drm/intel/issues/8273
  [i915#8282]: https://gitlab.freedesktop.org/drm/intel/issues/8282


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7194 -> IGTPW_8605
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_12857: 004fefbbf160569f80946d1e516d538b7ecb04f2 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8605: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8605/index.html
  IGT_7194: d22d66efd6211a22d301649b63d58c8c293e0817 @ 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_8605/index.html

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

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

end of thread, other threads:[~2023-03-15 20:05 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-14 14:44 [igt-dev] [PATCH i-g-t v3 0/8] Update gem_blits for newer generations Karolina Stolarek
2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 1/8] lib/i915_blt: Add helpers to check XY_SRC_COPY support Karolina Stolarek
2023-03-15  8:32   ` Zbigniew Kempczyński
2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 2/8] lib/intel_cmds_info: Correct tiling formats for XY_SRC_COPY Karolina Stolarek
2023-03-15 10:11   ` Zbigniew Kempczyński
2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 3/8] lib/intel_device_info: Add tiling information for early gens Karolina Stolarek
2023-03-15 10:36   ` Zbigniew Kempczyński
2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 4/8] tests/i915/gem_blits: Use new copy instruction Karolina Stolarek
2023-03-15 10:42   ` Zbigniew Kempczyński
2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 5/8] lib/intel_batchbuffer: Add wrapper API to use XY_FAST_COPY_BLT/XY_SRC_BLT Karolina Stolarek
2023-03-15 10:45   ` Zbigniew Kempczyński
2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 6/8] tests/i915/gem_blits: Add XY_FAST_COPY_BLT support for gem_blits Karolina Stolarek
2023-03-15 10:49   ` Zbigniew Kempczyński
2023-03-15 15:11     ` Karolina Stolarek
2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 7/8] lib/intel_cmds_info: Reorder blt_tiling_type enum Karolina Stolarek
2023-03-15 10:49   ` Zbigniew Kempczyński
2023-03-14 14:44 ` [igt-dev] [PATCH i-g-t v3 8/8] tests/gem_blits: Use intel_cmds_info library Karolina Stolarek
2023-03-15 10:54   ` Zbigniew Kempczyński
2023-03-14 16:13 ` [igt-dev] ✓ Fi.CI.BAT: success for Update gem_blits for newer generations (rev3) Patchwork
2023-03-15 20:05 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.