All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t v4 0/9] Update gem_blits for newer generations
@ 2023-03-17 12:37 Karolina Stolarek
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 1/9] lib/i915_blt: Add helpers to check XY_SRC_COPY support Karolina Stolarek
                   ` (10 more replies)
  0 siblings, 11 replies; 18+ messages in thread
From: Karolina Stolarek @ 2023-03-17 12:37 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

v4:
  - Dropped patch "tests/i915/gem_blits: Add XY_FAST_COPY_BLT support
    for gem_blits" in favour of "lib/intel_batchbuffer: Handle no
    support for Tile Y", as Zbigniew suggested that the workaround
    should be implemented inside the fast_copy_dword1() function
  - Added an extra patch with headers cleanup, as intel_batchbuffer.c
    had _a lot_ of them included
  - Rewrite conditional statements in gem_blits to first check for
    xy_src_copy support and then for fast copy. Update
    blit_supports_tiling() to reflect that change

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 (1):
  tests/i915/gem_blits: Use new copy instruction

Karolina Stolarek (7):
  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_batchbuffer: Remove unused includes
  lib/intel_cmds_info: Reorder blt_tiling_type enum
  lib/intel_batchbuffer: Handle no support for Tile Y
  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    | 128 +++++++++++++++++++++++--------
 lib/intel_batchbuffer.h    |  28 +++++++
 lib/intel_device_info.c    |  29 +++++--
 tests/i915/gem_blits.c     | 151 ++++++++++++++++++++++++-------------
 8 files changed, 305 insertions(+), 101 deletions(-)

-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t v4 1/9] lib/i915_blt: Add helpers to check XY_SRC_COPY support
  2023-03-17 12:37 [igt-dev] [PATCH i-g-t v4 0/9] Update gem_blits for newer generations Karolina Stolarek
@ 2023-03-17 12:37 ` Karolina Stolarek
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 2/9] lib/intel_cmds_info: Correct tiling formats for XY_SRC_COPY Karolina Stolarek
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 18+ messages in thread
From: Karolina Stolarek @ 2023-03-17 12:37 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>
Reviewed-by: 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] 18+ messages in thread

* [igt-dev] [PATCH i-g-t v4 2/9] lib/intel_cmds_info: Correct tiling formats for XY_SRC_COPY
  2023-03-17 12:37 [igt-dev] [PATCH i-g-t v4 0/9] Update gem_blits for newer generations Karolina Stolarek
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 1/9] lib/i915_blt: Add helpers to check XY_SRC_COPY support Karolina Stolarek
@ 2023-03-17 12:37 ` Karolina Stolarek
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 3/9] lib/intel_device_info: Add tiling information for early gens Karolina Stolarek
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 18+ messages in thread
From: Karolina Stolarek @ 2023-03-17 12:37 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>
Reviewed-by: 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] 18+ messages in thread

* [igt-dev] [PATCH i-g-t v4 3/9] lib/intel_device_info: Add tiling information for early gens
  2023-03-17 12:37 [igt-dev] [PATCH i-g-t v4 0/9] Update gem_blits for newer generations Karolina Stolarek
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 1/9] lib/i915_blt: Add helpers to check XY_SRC_COPY support Karolina Stolarek
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 2/9] lib/intel_cmds_info: Correct tiling formats for XY_SRC_COPY Karolina Stolarek
@ 2023-03-17 12:37 ` Karolina Stolarek
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 4/9] tests/i915/gem_blits: Use new copy instruction Karolina Stolarek
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 18+ messages in thread
From: Karolina Stolarek @ 2023-03-17 12:37 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>
Reviewed-by: 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] 18+ messages in thread

* [igt-dev] [PATCH i-g-t v4 4/9] tests/i915/gem_blits: Use new copy instruction
  2023-03-17 12:37 [igt-dev] [PATCH i-g-t v4 0/9] Update gem_blits for newer generations Karolina Stolarek
                   ` (2 preceding siblings ...)
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 3/9] lib/intel_device_info: Add tiling information for early gens Karolina Stolarek
@ 2023-03-17 12:37 ` Karolina Stolarek
  2023-03-20  6:35   ` Zbigniew Kempczyński
  2023-03-20  6:36   ` Zbigniew Kempczyński
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 5/9] lib/intel_batchbuffer: Add wrapper API to use XY_FAST_COPY_BLT/XY_SRC_BLT Karolina Stolarek
                   ` (6 subsequent siblings)
  10 siblings, 2 replies; 18+ messages in thread
From: Karolina Stolarek @ 2023-03-17 12:37 UTC (permalink / raw)
  To: igt-dev; +Cc: Arjun Melkaveri, Fei Yang, 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>
---
 lib/intel_batchbuffer.c | 10 ++---
 lib/intel_batchbuffer.h |  6 +++
 tests/i915/gem_blits.c  | 90 ++++++++++++++++++++++++++---------------
 3 files changed, 68 insertions(+), 38 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..1414826c 100644
--- a/tests/i915/gem_blits.c
+++ b/tests/i915/gem_blits.c
@@ -22,10 +22,12 @@
  *
  */
 
+#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)
@@ -145,8 +147,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 +208,28 @@ 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] = (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;
+	} else if (blt_has_fast_copy(device->fd)) {
+		batch[i++] = fast_copy_dword0(buffer->tiling, tiling);
+		dword1 = fast_copy_dword1(buffer->tiling, tiling, 32);
+		batch[i++] = dword1 | pitch;
+	} else {
+		igt_assert_f(0, "No supported blit command found\n");
+	}
+
 	batch[i++] = 0;
 	batch[i++] = buffer->height << 16 | buffer->width;
 	reloc[0].target_handle = obj[0].handle;
@@ -296,8 +306,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 +361,22 @@ 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;
+	if (blt_has_xy_src_copy(device->fd)) {
+		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;
+	} else if (blt_has_fast_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 {
+		igt_assert_f(0, "No supported blit command found\n");
+	}
 
-	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 +615,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,19 +703,27 @@ 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] = (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;
+	} else if (blt_has_fast_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 {
+		igt_assert_f(0, "No supported blit command found\n");
+	}
 
 	batch[i++] = dst_y << 16 | dst_x;
 	batch[i++] = (height + dst_y) << 16 | (width + dst_x);
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t v4 5/9] lib/intel_batchbuffer: Add wrapper API to use XY_FAST_COPY_BLT/XY_SRC_BLT
  2023-03-17 12:37 [igt-dev] [PATCH i-g-t v4 0/9] Update gem_blits for newer generations Karolina Stolarek
                   ` (3 preceding siblings ...)
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 4/9] tests/i915/gem_blits: Use new copy instruction Karolina Stolarek
@ 2023-03-17 12:37 ` Karolina Stolarek
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 6/9] lib/intel_batchbuffer: Remove unused includes Karolina Stolarek
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 18+ messages in thread
From: Karolina Stolarek @ 2023-03-17 12:37 UTC (permalink / raw)
  To: igt-dev

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>
Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski@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] 18+ messages in thread

* [igt-dev] [PATCH i-g-t v4 6/9] lib/intel_batchbuffer: Remove unused includes
  2023-03-17 12:37 [igt-dev] [PATCH i-g-t v4 0/9] Update gem_blits for newer generations Karolina Stolarek
                   ` (4 preceding siblings ...)
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 5/9] lib/intel_batchbuffer: Add wrapper API to use XY_FAST_COPY_BLT/XY_SRC_BLT Karolina Stolarek
@ 2023-03-17 12:37 ` Karolina Stolarek
  2023-03-20  6:38   ` Zbigniew Kempczyński
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 7/9] lib/intel_cmds_info: Reorder blt_tiling_type enum Karolina Stolarek
                   ` (4 subsequent siblings)
  10 siblings, 1 reply; 18+ messages in thread
From: Karolina Stolarek @ 2023-03-17 12:37 UTC (permalink / raw)
  To: igt-dev

The library includes a lot of headers and most of them are
not needed.

Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
---
 lib/intel_batchbuffer.c | 22 ++++------------------
 1 file changed, 4 insertions(+), 18 deletions(-)

diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
index a5157194..1b999ca5 100644
--- a/lib/intel_batchbuffer.c
+++ b/lib/intel_batchbuffer.c
@@ -25,35 +25,21 @@
  *
  **************************************************************************/
 
-#include <inttypes.h>
-#include <poll.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
 #include <search.h>
+#include <glib.h>
 
-#include "drm.h"
-#include "drmtest.h"
 #include "i915/gem_create.h"
 #include "intel_batchbuffer.h"
 #include "intel_bufops.h"
 #include "intel_chipset.h"
-#include "intel_reg.h"
-#include "veboxcopy.h"
 #include "rendercopy.h"
 #include "media_fill.h"
-#include "ioctl_wrappers.h"
-#include "sw_sync.h"
-#include "i915/gem_mman.h"
 #include "media_spin.h"
+#include "i915/gem_mman.h"
+#include "veboxcopy.h"
+#include "sw_sync.h"
 #include "gpgpu_fill.h"
-#include "igt_aux.h"
-#include "i830_reg.h"
 #include "huc_copy.h"
-#include <glib.h>
-
-#include <i915_drm.h>
 
 #define BCS_SWCTRL 0x22200
 #define BCS_SRC_Y (1 << 0)
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t v4 7/9] lib/intel_cmds_info: Reorder blt_tiling_type enum
  2023-03-17 12:37 [igt-dev] [PATCH i-g-t v4 0/9] Update gem_blits for newer generations Karolina Stolarek
                   ` (5 preceding siblings ...)
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 6/9] lib/intel_batchbuffer: Remove unused includes Karolina Stolarek
@ 2023-03-17 12:37 ` Karolina Stolarek
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 8/9] lib/intel_batchbuffer: Handle no support for Tile Y Karolina Stolarek
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 18+ messages in thread
From: Karolina Stolarek @ 2023-03-17 12:37 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>
Reviewed-by: 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] 18+ messages in thread

* [igt-dev] [PATCH i-g-t v4 8/9] lib/intel_batchbuffer: Handle no support for Tile Y
  2023-03-17 12:37 [igt-dev] [PATCH i-g-t v4 0/9] Update gem_blits for newer generations Karolina Stolarek
                   ` (6 preceding siblings ...)
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 7/9] lib/intel_cmds_info: Reorder blt_tiling_type enum Karolina Stolarek
@ 2023-03-17 12:37 ` Karolina Stolarek
  2023-03-17 14:16   ` Das, Nirmoy
  2023-03-20  6:40   ` Zbigniew Kempczyński
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 9/9] tests/gem_blits: Use intel_cmds_info library Karolina Stolarek
                   ` (2 subsequent siblings)
  10 siblings, 2 replies; 18+ messages in thread
From: Karolina Stolarek @ 2023-03-17 12:37 UTC (permalink / raw)
  To: igt-dev

Newer generations stopped supporting legacy Tile Y format.
In order to do a Y-Major blit, the command has to use Tile4
format, which requires setting specific blits in the first
bit group of the XY_FAST_COPY_BLT command.

Rewrite fast_copy_dword1 function to always set them when
a platform doesn't support the legacy format. Update calls
to the function to include file descriptor parameter.

Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
Cc: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
---
 lib/intel_batchbuffer.c | 26 +++++++++++++++++---------
 lib/intel_batchbuffer.h |  2 +-
 tests/i915/gem_blits.c  |  9 ++++++---
 3 files changed, 24 insertions(+), 13 deletions(-)

diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
index 1b999ca5..24728d4a 100644
--- a/lib/intel_batchbuffer.c
+++ b/lib/intel_batchbuffer.c
@@ -32,7 +32,6 @@
 #include "intel_batchbuffer.h"
 #include "intel_bufops.h"
 #include "intel_chipset.h"
-#include "rendercopy.h"
 #include "media_fill.h"
 #include "media_spin.h"
 #include "i915/gem_mman.h"
@@ -40,6 +39,7 @@
 #include "sw_sync.h"
 #include "gpgpu_fill.h"
 #include "huc_copy.h"
+#include "i915/i915_blt.h"
 
 #define BCS_SWCTRL 0x22200
 #define BCS_SRC_Y (1 << 0)
@@ -122,18 +122,26 @@ uint32_t fast_copy_dword0(unsigned int src_tiling,
 	return dword0;
 }
 
+static bool new_tile_y_format(unsigned int tiling)
+{
+	return tiling == T_YFMAJOR || tiling == T_TILE4;
+}
+
 uint32_t fast_copy_dword1(unsigned int src_tiling,
 			  unsigned int dst_tiling,
-			  int bpp)
+			  int bpp, int fd)
 {
 	uint32_t dword1 = 0;
 
-	if (src_tiling == I915_TILING_Yf || src_tiling == I915_TILING_4)
-		/* Repurposed as Tile-4 on DG2 */
-		dword1 |= XY_FAST_COPY_SRC_TILING_Yf;
-	if (dst_tiling == I915_TILING_Yf || dst_tiling == I915_TILING_4)
-		/* Repurposed as Tile-4 on DG2 */
-		dword1 |= XY_FAST_COPY_DST_TILING_Yf;
+	if (blt_fast_copy_supports_tiling(fd, T_YMAJOR)) {
+		dword1 |= new_tile_y_format(src_tiling)
+				? XY_FAST_COPY_SRC_TILING_Yf : 0;
+		dword1 |= new_tile_y_format(dst_tiling)
+				? XY_FAST_COPY_DST_TILING_Yf : 0;
+	} else {
+		/* Always set bits for platforms that don't support legacy TileY */
+		dword1 |= XY_FAST_COPY_SRC_TILING_Yf | XY_FAST_COPY_DST_TILING_Yf;
+	}
 
 	switch (bpp) {
 	case 8:
@@ -582,7 +590,7 @@ void igt_blitter_fast_copy__raw(int fd,
 	src_pitch = fast_copy_pitch(src_stride, src_tiling);
 	dst_pitch = fast_copy_pitch(dst_stride, dst_tiling);
 	dword0 = fast_copy_dword0(src_tiling, dst_tiling);
-	dword1 = fast_copy_dword1(src_tiling, dst_tiling, bpp);
+	dword1 = fast_copy_dword1(src_tiling, dst_tiling, bpp, fd);
 
 	CHECK_RANGE(src_x); CHECK_RANGE(src_y);
 	CHECK_RANGE(dst_x); CHECK_RANGE(dst_y);
diff --git a/lib/intel_batchbuffer.h b/lib/intel_batchbuffer.h
index aed1d575..fb244c2b 100644
--- a/lib/intel_batchbuffer.h
+++ b/lib/intel_batchbuffer.h
@@ -35,7 +35,7 @@ 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);
+			  int bpp, int fd);
 void igt_blitter_copy(int fd,
 		      uint64_t ahnd,
 		      uint32_t ctx,
diff --git a/tests/i915/gem_blits.c b/tests/i915/gem_blits.c
index 1414826c..0d4655f8 100644
--- a/tests/i915/gem_blits.c
+++ b/tests/i915/gem_blits.c
@@ -224,7 +224,8 @@ static void buffer_set_tiling(const struct device *device,
 		batch[i++] = 3 << 24 | 0xcc << 16 | pitch;
 	} else if (blt_has_fast_copy(device->fd)) {
 		batch[i++] = fast_copy_dword0(buffer->tiling, tiling);
-		dword1 = fast_copy_dword1(buffer->tiling, tiling, 32);
+		dword1 = fast_copy_dword1(buffer->tiling, tiling,
+					  32, device->fd);
 		batch[i++] = dword1 | pitch;
 	} else {
 		igt_assert_f(0, "No supported blit command found\n");
@@ -371,7 +372,8 @@ static bool blit_to_linear(const struct device *device,
 		batch[i++] = 3 << 24 | 0xcc << 16 | buffer->stride;
 	} else if (blt_has_fast_copy(device->fd)) {
 		batch[i++] = fast_copy_dword0(buffer->tiling, I915_TILING_NONE);
-		dword1 = fast_copy_dword1(buffer->tiling, I915_TILING_NONE, 32);
+		dword1 = fast_copy_dword1(buffer->tiling, I915_TILING_NONE,
+					  32, device->fd);
 		batch[i++] = dword1 | buffer->stride;
 	} else {
 		igt_assert_f(0, "No supported blit command found\n");
@@ -719,7 +721,8 @@ blit(const struct device *device,
 		batch[i++] = 3 << 24 | 0xcc << 16 | pitch;
 	} else if (blt_has_fast_copy(device->fd)) {
 		batch[i++] = fast_copy_dword0(src->tiling, dst->tiling);
-		dword1 = fast_copy_dword1(src->tiling, dst->tiling, 32);
+		dword1 = fast_copy_dword1(src->tiling, dst->tiling,
+					  32, device->fd);
 		batch[i++] = dword1 | pitch;
 	} else {
 		igt_assert_f(0, "No supported blit command found\n");
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t v4 9/9] tests/gem_blits: Use intel_cmds_info library
  2023-03-17 12:37 [igt-dev] [PATCH i-g-t v4 0/9] Update gem_blits for newer generations Karolina Stolarek
                   ` (7 preceding siblings ...)
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 8/9] lib/intel_batchbuffer: Handle no support for Tile Y Karolina Stolarek
@ 2023-03-17 12:37 ` Karolina Stolarek
  2023-03-17 14:38 ` [igt-dev] ✓ Fi.CI.BAT: success for Update gem_blits for newer generations (rev4) Patchwork
  2023-03-17 15:44 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  10 siblings, 0 replies; 18+ messages in thread
From: Karolina Stolarek @ 2023-03-17 12:37 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 | 62 ++++++++++++++++++++++++++----------------
 2 files changed, 45 insertions(+), 23 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 0d4655f8..a90ad4c9 100644
--- a/tests/i915/gem_blits.c
+++ b/tests/i915/gem_blits.c
@@ -70,7 +70,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);
@@ -94,7 +94,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);
@@ -115,8 +115,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;
@@ -194,16 +194,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;
 	}
@@ -255,7 +255,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;
@@ -350,14 +350,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;
 	}
@@ -371,8 +371,8 @@ static bool blit_to_linear(const struct device *device,
 		batch[i++] |= 6 + 2 * has_64b_reloc;
 		batch[i++] = 3 << 24 | 0xcc << 16 | buffer->stride;
 	} else if (blt_has_fast_copy(device->fd)) {
-		batch[i++] = fast_copy_dword0(buffer->tiling, I915_TILING_NONE);
-		dword1 = fast_copy_dword1(buffer->tiling, I915_TILING_NONE,
+		batch[i++] = fast_copy_dword0(buffer->tiling, T_LINEAR);
+		dword1 = fast_copy_dword1(buffer->tiling, T_LINEAR,
 					  32, device->fd);
 		batch[i++] = dword1 | buffer->stride;
 	} else {
@@ -403,7 +403,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;
@@ -691,16 +691,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;
 	}
@@ -752,7 +752,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;
@@ -800,6 +800,17 @@ 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);
+	} else if (blt_has_fast_copy(fd)) {
+		return blt_fast_copy_supports_tiling(fd, tiling);
+	} else {
+		igt_assert_f(0, "No supported blit command found\n");
+	}
+}
+
 igt_main
 {
 	struct device device;
@@ -830,15 +841,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] 18+ messages in thread

* Re: [igt-dev] [PATCH i-g-t v4 8/9] lib/intel_batchbuffer: Handle no support for Tile Y
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 8/9] lib/intel_batchbuffer: Handle no support for Tile Y Karolina Stolarek
@ 2023-03-17 14:16   ` Das, Nirmoy
  2023-03-20  7:49     ` Karolina Stolarek
  2023-03-20  6:40   ` Zbigniew Kempczyński
  1 sibling, 1 reply; 18+ messages in thread
From: Das, Nirmoy @ 2023-03-17 14:16 UTC (permalink / raw)
  To: Karolina Stolarek, igt-dev


On 3/17/2023 1:37 PM, Karolina Stolarek wrote:
> Newer generations stopped supporting legacy Tile Y format.
> In order to do a Y-Major blit, the command has to use Tile4
> format, which requires setting specific blits in the first
> bit group of the XY_FAST_COPY_BLT command.
>
> Rewrite fast_copy_dword1 function to always set them when
> a platform doesn't support the legacy format. Update calls
> to the function to include file descriptor parameter.
>
> Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
> Cc: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
> ---
>   lib/intel_batchbuffer.c | 26 +++++++++++++++++---------
>   lib/intel_batchbuffer.h |  2 +-
>   tests/i915/gem_blits.c  |  9 ++++++---
>   3 files changed, 24 insertions(+), 13 deletions(-)
>
> diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
> index 1b999ca5..24728d4a 100644
> --- a/lib/intel_batchbuffer.c
> +++ b/lib/intel_batchbuffer.c
> @@ -32,7 +32,6 @@
>   #include "intel_batchbuffer.h"
>   #include "intel_bufops.h"
>   #include "intel_chipset.h"
> -#include "rendercopy.h"
>   #include "media_fill.h"
>   #include "media_spin.h"
>   #include "i915/gem_mman.h"
> @@ -40,6 +39,7 @@
>   #include "sw_sync.h"
>   #include "gpgpu_fill.h"
>   #include "huc_copy.h"
> +#include "i915/i915_blt.h"
>   
>   #define BCS_SWCTRL 0x22200
>   #define BCS_SRC_Y (1 << 0)
> @@ -122,18 +122,26 @@ uint32_t fast_copy_dword0(unsigned int src_tiling,
>   	return dword0;
>   }
>   
> +static bool new_tile_y_format(unsigned int tiling)
> +{
> +	return tiling == T_YFMAJOR || tiling == T_TILE4;
> +}
> +
>   uint32_t fast_copy_dword1(unsigned int src_tiling,
>   			  unsigned int dst_tiling,
> -			  int bpp)
> +			  int bpp, int fd)
>   {
>   	uint32_t dword1 = 0;
>   
> -	if (src_tiling == I915_TILING_Yf || src_tiling == I915_TILING_4)
> -		/* Repurposed as Tile-4 on DG2 */
> -		dword1 |= XY_FAST_COPY_SRC_TILING_Yf;
> -	if (dst_tiling == I915_TILING_Yf || dst_tiling == I915_TILING_4)
> -		/* Repurposed as Tile-4 on DG2 */
> -		dword1 |= XY_FAST_COPY_DST_TILING_Yf;
> +	if (blt_fast_copy_supports_tiling(fd, T_YMAJOR)) {
> +		dword1 |= new_tile_y_format(src_tiling)
> +				? XY_FAST_COPY_SRC_TILING_Yf : 0;


nit: Let it new_tile_y_format()  return "0 or 
XY_FAST_COPY_SRC_TILING_Yf" to avoid extra line.


Regards,

Nirmoy


> +		dword1 |= new_tile_y_format(dst_tiling)
> +				? XY_FAST_COPY_DST_TILING_Yf : 0;
> +	} else {
> +		/* Always set bits for platforms that don't support legacy TileY */
> +		dword1 |= XY_FAST_COPY_SRC_TILING_Yf | XY_FAST_COPY_DST_TILING_Yf;
> +	}
>   
>   	switch (bpp) {
>   	case 8:
> @@ -582,7 +590,7 @@ void igt_blitter_fast_copy__raw(int fd,
>   	src_pitch = fast_copy_pitch(src_stride, src_tiling);
>   	dst_pitch = fast_copy_pitch(dst_stride, dst_tiling);
>   	dword0 = fast_copy_dword0(src_tiling, dst_tiling);
> -	dword1 = fast_copy_dword1(src_tiling, dst_tiling, bpp);
> +	dword1 = fast_copy_dword1(src_tiling, dst_tiling, bpp, fd);
>   
>   	CHECK_RANGE(src_x); CHECK_RANGE(src_y);
>   	CHECK_RANGE(dst_x); CHECK_RANGE(dst_y);
> diff --git a/lib/intel_batchbuffer.h b/lib/intel_batchbuffer.h
> index aed1d575..fb244c2b 100644
> --- a/lib/intel_batchbuffer.h
> +++ b/lib/intel_batchbuffer.h
> @@ -35,7 +35,7 @@ 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);
> +			  int bpp, int fd);
>   void igt_blitter_copy(int fd,
>   		      uint64_t ahnd,
>   		      uint32_t ctx,
> diff --git a/tests/i915/gem_blits.c b/tests/i915/gem_blits.c
> index 1414826c..0d4655f8 100644
> --- a/tests/i915/gem_blits.c
> +++ b/tests/i915/gem_blits.c
> @@ -224,7 +224,8 @@ static void buffer_set_tiling(const struct device *device,
>   		batch[i++] = 3 << 24 | 0xcc << 16 | pitch;
>   	} else if (blt_has_fast_copy(device->fd)) {
>   		batch[i++] = fast_copy_dword0(buffer->tiling, tiling);
> -		dword1 = fast_copy_dword1(buffer->tiling, tiling, 32);
> +		dword1 = fast_copy_dword1(buffer->tiling, tiling,
> +					  32, device->fd);
>   		batch[i++] = dword1 | pitch;
>   	} else {
>   		igt_assert_f(0, "No supported blit command found\n");
> @@ -371,7 +372,8 @@ static bool blit_to_linear(const struct device *device,
>   		batch[i++] = 3 << 24 | 0xcc << 16 | buffer->stride;
>   	} else if (blt_has_fast_copy(device->fd)) {
>   		batch[i++] = fast_copy_dword0(buffer->tiling, I915_TILING_NONE);
> -		dword1 = fast_copy_dword1(buffer->tiling, I915_TILING_NONE, 32);
> +		dword1 = fast_copy_dword1(buffer->tiling, I915_TILING_NONE,
> +					  32, device->fd);
>   		batch[i++] = dword1 | buffer->stride;
>   	} else {
>   		igt_assert_f(0, "No supported blit command found\n");
> @@ -719,7 +721,8 @@ blit(const struct device *device,
>   		batch[i++] = 3 << 24 | 0xcc << 16 | pitch;
>   	} else if (blt_has_fast_copy(device->fd)) {
>   		batch[i++] = fast_copy_dword0(src->tiling, dst->tiling);
> -		dword1 = fast_copy_dword1(src->tiling, dst->tiling, 32);
> +		dword1 = fast_copy_dword1(src->tiling, dst->tiling,
> +					  32, device->fd);
>   		batch[i++] = dword1 | pitch;
>   	} else {
>   		igt_assert_f(0, "No supported blit command found\n");

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

* [igt-dev] ✓ Fi.CI.BAT: success for Update gem_blits for newer generations (rev4)
  2023-03-17 12:37 [igt-dev] [PATCH i-g-t v4 0/9] Update gem_blits for newer generations Karolina Stolarek
                   ` (8 preceding siblings ...)
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 9/9] tests/gem_blits: Use intel_cmds_info library Karolina Stolarek
@ 2023-03-17 14:38 ` Patchwork
  2023-03-17 15:44 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  10 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2023-03-17 14:38 UTC (permalink / raw)
  To: Karolina Stolarek; +Cc: igt-dev

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

== Series Details ==

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

== Summary ==

CI Bug Log - changes from IGT_7204 -> IGTPW_8632
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

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

  Missing    (2): bat-adlm-1 fi-snb-2520m 

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

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

### IGT changes ###

#### Suppressed ####

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

  * {igt@i915_selftest@live@gt_tlb}:
    - bat-jsl-3:          [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/bat-jsl-3/igt@i915_selftest@live@gt_tlb.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/bat-jsl-3/igt@i915_selftest@live@gt_tlb.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_chamelium_hpd@common-hpd-after-suspend:
    - bat-rpls-1:         NOTRUN -> [SKIP][3] ([i915#7828])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/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][4] ([i915#1845])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/bat-rpls-1/igt@kms_pipe_crc_basic@suspend-read-crc.html

  
#### Possible fixes ####

  * igt@gem_exec_suspend@basic-s3@smem:
    - bat-rpls-1:         [ABORT][5] ([i915#6687] / [i915#7978]) -> [PASS][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/bat-rpls-1/igt@gem_exec_suspend@basic-s3@smem.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/bat-rpls-1/igt@gem_exec_suspend@basic-s3@smem.html

  * igt@i915_selftest@live@migrate:
    - bat-adlp-9:         [DMESG-FAIL][7] ([i915#7699]) -> [PASS][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/bat-adlp-9/igt@i915_selftest@live@migrate.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/bat-adlp-9/igt@i915_selftest@live@migrate.html

  * igt@i915_selftest@live@slpc:
    - bat-rpls-1:         [DMESG-FAIL][9] ([i915#6997]) -> [PASS][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/bat-rpls-1/igt@i915_selftest@live@slpc.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/bat-rpls-1/igt@i915_selftest@live@slpc.html

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

  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#6687]: https://gitlab.freedesktop.org/drm/intel/issues/6687
  [i915#6997]: https://gitlab.freedesktop.org/drm/intel/issues/6997
  [i915#7699]: https://gitlab.freedesktop.org/drm/intel/issues/7699
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#7978]: https://gitlab.freedesktop.org/drm/intel/issues/7978


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7204 -> IGTPW_8632

  CI-20190529: 20190529
  CI_DRM_12873: b97925f47e2a20e1b79bc7c8cc236ded1bd431df @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8632: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/index.html
  IGT_7204: 0dc71800a0dd867e1fa32ee01c2dbf42b46ec3e2 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* [igt-dev] ✓ Fi.CI.IGT: success for Update gem_blits for newer generations (rev4)
  2023-03-17 12:37 [igt-dev] [PATCH i-g-t v4 0/9] Update gem_blits for newer generations Karolina Stolarek
                   ` (9 preceding siblings ...)
  2023-03-17 14:38 ` [igt-dev] ✓ Fi.CI.BAT: success for Update gem_blits for newer generations (rev4) Patchwork
@ 2023-03-17 15:44 ` Patchwork
  10 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2023-03-17 15:44 UTC (permalink / raw)
  To: Karolina Stolarek; +Cc: igt-dev

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

== Series Details ==

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

== Summary ==

CI Bug Log - changes from IGT_7204_full -> IGTPW_8632_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

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

  Missing    (1): shard-rkl0 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_fair@basic-pace@vcs0:
    - shard-glk:          [PASS][1] -> [FAIL][2] ([i915#2842]) +2 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-glk3/igt@gem_exec_fair@basic-pace@vcs0.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-glk4/igt@gem_exec_fair@basic-pace@vcs0.html

  * igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs:
    - shard-glk:          NOTRUN -> [SKIP][3] ([fdo#109271]) +30 similar issues
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-glk4/igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs.html

  * igt@gem_userptr_blits@coherency-sync:
    - shard-snb:          [PASS][4] -> [INCOMPLETE][5] ([i915#3297])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-snb5/igt@gem_userptr_blits@coherency-sync.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-snb5/igt@gem_userptr_blits@coherency-sync.html

  * igt@i915_pm_dc@dc9-dpms:
    - shard-apl:          [PASS][6] -> [SKIP][7] ([fdo#109271]) +1 similar issue
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-apl1/igt@i915_pm_dc@dc9-dpms.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-apl7/igt@i915_pm_dc@dc9-dpms.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - shard-snb:          NOTRUN -> [SKIP][8] ([fdo#109271]) +28 similar issues
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-snb4/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html

  * igt@kms_ccs@pipe-b-crc-primary-basic-y_tiled_gen12_rc_ccs_cc:
    - shard-glk:          NOTRUN -> [SKIP][9] ([fdo#109271] / [i915#3886])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-glk6/igt@kms_ccs@pipe-b-crc-primary-basic-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_flip@flip-vs-panning-interruptible@b-dp1:
    - shard-apl:          [PASS][10] -> [DMESG-WARN][11] ([i915#62]) +11 similar issues
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-apl1/igt@kms_flip@flip-vs-panning-interruptible@b-dp1.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-apl6/igt@kms_flip@flip-vs-panning-interruptible@b-dp1.html

  * igt@perf_pmu@module-unload:
    - shard-apl:          [PASS][12] -> [DMESG-WARN][13] ([i915#1982] / [i915#62]) +1 similar issue
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-apl7/igt@perf_pmu@module-unload.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-apl6/igt@perf_pmu@module-unload.html

  
#### Possible fixes ####

  * igt@drm_fdinfo@idle@rcs0:
    - {shard-rkl}:        [FAIL][14] ([i915#7742]) -> [PASS][15]
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-rkl-4/igt@drm_fdinfo@idle@rcs0.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-rkl-2/igt@drm_fdinfo@idle@rcs0.html

  * igt@fbdev@unaligned-read:
    - {shard-tglu}:       [SKIP][16] ([i915#2582]) -> [PASS][17] +1 similar issue
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-tglu-9/igt@fbdev@unaligned-read.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-tglu-5/igt@fbdev@unaligned-read.html

  * {igt@gem_barrier_race@remote-request@rcs0}:
    - shard-glk:          [ABORT][18] ([i915#8211]) -> [PASS][19]
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-glk9/igt@gem_barrier_race@remote-request@rcs0.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-glk4/igt@gem_barrier_race@remote-request@rcs0.html

  * igt@gem_eio@in-flight-suspend:
    - {shard-rkl}:        [FAIL][20] ([fdo#103375]) -> [PASS][21] +2 similar issues
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-rkl-3/igt@gem_eio@in-flight-suspend.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-rkl-1/igt@gem_eio@in-flight-suspend.html

  * igt@gem_eio@reset-stress:
    - {shard-dg1}:        [FAIL][22] ([i915#5784]) -> [PASS][23]
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-dg1-16/igt@gem_eio@reset-stress.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-dg1-13/igt@gem_eio@reset-stress.html

  * igt@gem_exec_fair@basic-deadline:
    - {shard-rkl}:        [FAIL][24] ([i915#2846]) -> [PASS][25]
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-rkl-4/igt@gem_exec_fair@basic-deadline.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-rkl-3/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-none-vip@rcs0:
    - {shard-rkl}:        [FAIL][26] ([i915#2842]) -> [PASS][27]
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-rkl-3/igt@gem_exec_fair@basic-none-vip@rcs0.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-rkl-5/igt@gem_exec_fair@basic-none-vip@rcs0.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-glk:          [FAIL][28] ([i915#2842]) -> [PASS][29]
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-glk7/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-glk9/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_flush@basic-batch-kernel-default-cmd:
    - {shard-rkl}:        [SKIP][30] ([fdo#109313]) -> [PASS][31]
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-rkl-1/igt@gem_exec_flush@basic-batch-kernel-default-cmd.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-rkl-5/igt@gem_exec_flush@basic-batch-kernel-default-cmd.html

  * igt@gem_exec_reloc@basic-cpu-gtt-noreloc:
    - {shard-rkl}:        [SKIP][32] ([i915#3281]) -> [PASS][33] +5 similar issues
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-rkl-1/igt@gem_exec_reloc@basic-cpu-gtt-noreloc.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-rkl-5/igt@gem_exec_reloc@basic-cpu-gtt-noreloc.html

  * igt@gem_mmap_gtt@coherency:
    - {shard-rkl}:        [SKIP][34] ([fdo#111656]) -> [PASS][35]
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-rkl-3/igt@gem_mmap_gtt@coherency.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-rkl-5/igt@gem_mmap_gtt@coherency.html

  * igt@gem_mmap_gtt@fault-concurrent-x:
    - shard-snb:          [ABORT][36] ([i915#5161]) -> [PASS][37]
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-snb5/igt@gem_mmap_gtt@fault-concurrent-x.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-snb7/igt@gem_mmap_gtt@fault-concurrent-x.html

  * igt@gem_pwrite@basic-self:
    - {shard-rkl}:        [SKIP][38] ([i915#3282]) -> [PASS][39] +5 similar issues
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-rkl-2/igt@gem_pwrite@basic-self.html
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-rkl-5/igt@gem_pwrite@basic-self.html

  * igt@gen9_exec_parse@valid-registers:
    - {shard-rkl}:        [SKIP][40] ([i915#2527]) -> [PASS][41]
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-rkl-1/igt@gen9_exec_parse@valid-registers.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-rkl-5/igt@gen9_exec_parse@valid-registers.html

  * igt@i915_pm_rpm@dpms-lpsp:
    - {shard-rkl}:        [SKIP][42] ([i915#1397]) -> [PASS][43]
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-rkl-1/igt@i915_pm_rpm@dpms-lpsp.html
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-rkl-6/igt@i915_pm_rpm@dpms-lpsp.html

  * igt@i915_pm_rpm@modeset-lpsp-stress-no-wait:
    - {shard-tglu}:       [SKIP][44] ([i915#1397]) -> [PASS][45]
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-tglu-10/igt@i915_pm_rpm@modeset-lpsp-stress-no-wait.html
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-tglu-6/igt@i915_pm_rpm@modeset-lpsp-stress-no-wait.html

  * igt@i915_pm_rpm@pm-tiling:
    - {shard-tglu}:       [SKIP][46] ([i915#3547]) -> [PASS][47]
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-tglu-10/igt@i915_pm_rpm@pm-tiling.html
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-tglu-8/igt@i915_pm_rpm@pm-tiling.html

  * igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - {shard-rkl}:        [SKIP][48] ([i915#1845] / [i915#4098]) -> [PASS][49] +11 similar issues
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-rkl-3/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-rkl-6/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html

  * igt@kms_ccs@pipe-c-random-ccs-data-y_tiled_gen12_rc_ccs_cc:
    - {shard-tglu}:       [SKIP][50] ([i915#1845]) -> [PASS][51] +34 similar issues
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-tglu-10/igt@kms_ccs@pipe-c-random-ccs-data-y_tiled_gen12_rc_ccs_cc.html
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-tglu-8/igt@kms_ccs@pipe-c-random-ccs-data-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
    - shard-glk:          [FAIL][52] ([i915#2346]) -> [PASS][53]
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-glk3/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-glk9/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html

  * igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw:
    - {shard-rkl}:        [SKIP][54] ([i915#1849] / [i915#4098]) -> [PASS][55] +3 similar issues
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-rkl-2/igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw.html
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-plflip-blt:
    - {shard-tglu}:       [SKIP][56] ([i915#1849]) -> [PASS][57] +18 similar issues
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-tglu-9/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-plflip-blt.html
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-tglu-4/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-plflip-blt.html

  * igt@kms_plane@plane-panning-bottom-right@pipe-a-planes:
    - {shard-rkl}:        [SKIP][58] ([i915#1849]) -> [PASS][59] +1 similar issue
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-rkl-2/igt@kms_plane@plane-panning-bottom-right@pipe-a-planes.html
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-rkl-6/igt@kms_plane@plane-panning-bottom-right@pipe-a-planes.html

  * igt@kms_psr@dpms:
    - {shard-rkl}:        [SKIP][60] ([i915#1072]) -> [PASS][61]
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-rkl-4/igt@kms_psr@dpms.html
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-rkl-6/igt@kms_psr@dpms.html

  * igt@kms_universal_plane@universal-plane-pipe-c-sanity:
    - {shard-tglu}:       [SKIP][62] ([fdo#109274]) -> [PASS][63] +6 similar issues
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-tglu-9/igt@kms_universal_plane@universal-plane-pipe-c-sanity.html
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-tglu-5/igt@kms_universal_plane@universal-plane-pipe-c-sanity.html

  * igt@kms_vblank@pipe-a-wait-busy:
    - {shard-tglu}:       [SKIP][64] ([i915#1845] / [i915#7651]) -> [PASS][65] +29 similar issues
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-tglu-9/igt@kms_vblank@pipe-a-wait-busy.html
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-tglu-2/igt@kms_vblank@pipe-a-wait-busy.html

  * igt@perf_pmu@idle@rcs0:
    - {shard-dg1}:        [FAIL][66] ([i915#4349]) -> [PASS][67]
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-dg1-13/igt@perf_pmu@idle@rcs0.html
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-dg1-13/igt@perf_pmu@idle@rcs0.html

  * igt@prime_vgem@basic-fence-flip:
    - {shard-tglu}:       [SKIP][68] ([fdo#109295]) -> [PASS][69]
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-tglu-10/igt@prime_vgem@basic-fence-flip.html
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-tglu-3/igt@prime_vgem@basic-fence-flip.html

  * igt@prime_vgem@basic-fence-read:
    - {shard-rkl}:        [SKIP][70] ([fdo#109295] / [i915#3291] / [i915#3708]) -> [PASS][71]
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-rkl-3/igt@prime_vgem@basic-fence-read.html
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-rkl-5/igt@prime_vgem@basic-fence-read.html

  * igt@sysfs_timeslice_duration@timeout@rcs0:
    - {shard-dg1}:        [FAIL][72] ([i915#1755]) -> [PASS][73] +3 similar issues
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_7204/shard-dg1-18/igt@sysfs_timeslice_duration@timeout@rcs0.html
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/shard-dg1-13/igt@sysfs_timeslice_duration@timeout@rcs0.html

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

  [IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109279]: https://bugs.freedesktop.org/show_bug.cgi?id=109279
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#109303]: https://bugs.freedesktop.org/show_bug.cgi?id=109303
  [fdo#109309]: https://bugs.freedesktop.org/show_bug.cgi?id=109309
  [fdo#109313]: https://bugs.freedesktop.org/show_bug.cgi?id=109313
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506
  [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#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#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#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2433]: https://gitlab.freedesktop.org/drm/intel/issues/2433
  [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#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#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#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3361]: https://gitlab.freedesktop.org/drm/intel/issues/3361
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3469]: https://gitlab.freedesktop.org/drm/intel/issues/3469
  [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546
  [i915#3547]: https://gitlab.freedesktop.org/drm/intel/issues/3547
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [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#3825]: https://gitlab.freedesktop.org/drm/intel/issues/3825
  [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#3989]: https://gitlab.freedesktop.org/drm/intel/issues/3989
  [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#426]: https://gitlab.freedesktop.org/drm/intel/issues/426
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349
  [i915#4387]: https://gitlab.freedesktop.org/drm/intel/issues/4387
  [i915#4521]: https://gitlab.freedesktop.org/drm/intel/issues/4521
  [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#4771]: https://gitlab.freedesktop.org/drm/intel/issues/4771
  [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#4854]: https://gitlab.freedesktop.org/drm/intel/issues/4854
  [i915#4859]: https://gitlab.freedesktop.org/drm/intel/issues/4859
  [i915#4884]: https://gitlab.freedesktop.org/drm/intel/issues/4884
  [i915#5161]: https://gitlab.freedesktop.org/drm/intel/issues/5161
  [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#5431]: https://gitlab.freedesktop.org/drm/intel/issues/5431
  [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#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
  [i915#6230]: https://gitlab.freedesktop.org/drm/intel/issues/6230
  [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#6258]: https://gitlab.freedesktop.org/drm/intel/issues/6258
  [i915#6355]: https://gitlab.freedesktop.org/drm/intel/issues/6355
  [i915#6433]: https://gitlab.freedesktop.org/drm/intel/issues/6433
  [i915#6493]: https://gitlab.freedesktop.org/drm/intel/issues/6493
  [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#7561]: https://gitlab.freedesktop.org/drm/intel/issues/7561
  [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#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#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#8018]: https://gitlab.freedesktop.org/drm/intel/issues/8018
  [i915#8152]: https://gitlab.freedesktop.org/drm/intel/issues/8152
  [i915#8154]: https://gitlab.freedesktop.org/drm/intel/issues/8154
  [i915#8211]: https://gitlab.freedesktop.org/drm/intel/issues/8211
  [i915#8228]: https://gitlab.freedesktop.org/drm/intel/issues/8228
  [i915#8282]: https://gitlab.freedesktop.org/drm/intel/issues/8282
  [i915#8292]: https://gitlab.freedesktop.org/drm/intel/issues/8292


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7204 -> IGTPW_8632

  CI-20190529: 20190529
  CI_DRM_12873: b97925f47e2a20e1b79bc7c8cc236ded1bd431df @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8632: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8632/index.html
  IGT_7204: 0dc71800a0dd867e1fa32ee01c2dbf42b46ec3e2 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* Re: [igt-dev] [PATCH i-g-t v4 4/9] tests/i915/gem_blits: Use new copy instruction
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 4/9] tests/i915/gem_blits: Use new copy instruction Karolina Stolarek
@ 2023-03-20  6:35   ` Zbigniew Kempczyński
  2023-03-20  6:36   ` Zbigniew Kempczyński
  1 sibling, 0 replies; 18+ messages in thread
From: Zbigniew Kempczyński @ 2023-03-20  6:35 UTC (permalink / raw)
  To: Karolina Stolarek; +Cc: igt-dev, Arjun Melkaveri, Fei Yang, Nirmoy Das

On Fri, Mar 17, 2023 at 01:37:06PM +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>
> ---
>  lib/intel_batchbuffer.c | 10 ++---
>  lib/intel_batchbuffer.h |  6 +++
>  tests/i915/gem_blits.c  | 90 ++++++++++++++++++++++++++---------------
>  3 files changed, 68 insertions(+), 38 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..1414826c 100644
> --- a/tests/i915/gem_blits.c
> +++ b/tests/i915/gem_blits.c
> @@ -22,10 +22,12 @@
>   *
>   */
>  
> +#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)
> @@ -145,8 +147,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 +208,28 @@ 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] = (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;
> +	} else if (blt_has_fast_copy(device->fd)) {
> +		batch[i++] = fast_copy_dword0(buffer->tiling, tiling);
> +		dword1 = fast_copy_dword1(buffer->tiling, tiling, 32);
> +		batch[i++] = dword1 | pitch;

Ok, now it looks much better for me, especially caller doesn't
change tiling in the call and fast_copy_dword1() is responsible
to adjust appropriate bitfields.

--
Zbigniew

> +	} else {
> +		igt_assert_f(0, "No supported blit command found\n");
> +	}
> +
>  	batch[i++] = 0;
>  	batch[i++] = buffer->height << 16 | buffer->width;
>  	reloc[0].target_handle = obj[0].handle;
> @@ -296,8 +306,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 +361,22 @@ 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;
> +	if (blt_has_xy_src_copy(device->fd)) {
> +		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;
> +	} else if (blt_has_fast_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 {
> +		igt_assert_f(0, "No supported blit command found\n");
> +	}
>  
> -	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 +615,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,19 +703,27 @@ 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] = (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;
> +	} else if (blt_has_fast_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 {
> +		igt_assert_f(0, "No supported blit command found\n");
> +	}
>  
>  	batch[i++] = dst_y << 16 | dst_x;
>  	batch[i++] = (height + dst_y) << 16 | (width + dst_x);
> -- 
> 2.25.1
> 

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

* Re: [igt-dev] [PATCH i-g-t v4 4/9] tests/i915/gem_blits: Use new copy instruction
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 4/9] tests/i915/gem_blits: Use new copy instruction Karolina Stolarek
  2023-03-20  6:35   ` Zbigniew Kempczyński
@ 2023-03-20  6:36   ` Zbigniew Kempczyński
  1 sibling, 0 replies; 18+ messages in thread
From: Zbigniew Kempczyński @ 2023-03-20  6:36 UTC (permalink / raw)
  To: Karolina Stolarek; +Cc: igt-dev, Arjun Melkaveri, Fei Yang, Nirmoy Das

On Fri, Mar 17, 2023 at 01:37:06PM +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.
> 

Forgot to add in review:

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

--
Zbigniew

> 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>
> ---
>  lib/intel_batchbuffer.c | 10 ++---
>  lib/intel_batchbuffer.h |  6 +++
>  tests/i915/gem_blits.c  | 90 ++++++++++++++++++++++++++---------------
>  3 files changed, 68 insertions(+), 38 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..1414826c 100644
> --- a/tests/i915/gem_blits.c
> +++ b/tests/i915/gem_blits.c
> @@ -22,10 +22,12 @@
>   *
>   */
>  
> +#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)
> @@ -145,8 +147,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 +208,28 @@ 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] = (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;
> +	} else if (blt_has_fast_copy(device->fd)) {
> +		batch[i++] = fast_copy_dword0(buffer->tiling, tiling);
> +		dword1 = fast_copy_dword1(buffer->tiling, tiling, 32);
> +		batch[i++] = dword1 | pitch;
> +	} else {
> +		igt_assert_f(0, "No supported blit command found\n");
> +	}
> +
>  	batch[i++] = 0;
>  	batch[i++] = buffer->height << 16 | buffer->width;
>  	reloc[0].target_handle = obj[0].handle;
> @@ -296,8 +306,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 +361,22 @@ 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;
> +	if (blt_has_xy_src_copy(device->fd)) {
> +		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;
> +	} else if (blt_has_fast_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 {
> +		igt_assert_f(0, "No supported blit command found\n");
> +	}
>  
> -	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 +615,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,19 +703,27 @@ 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] = (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;
> +	} else if (blt_has_fast_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 {
> +		igt_assert_f(0, "No supported blit command found\n");
> +	}
>  
>  	batch[i++] = dst_y << 16 | dst_x;
>  	batch[i++] = (height + dst_y) << 16 | (width + dst_x);
> -- 
> 2.25.1
> 

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

* Re: [igt-dev] [PATCH i-g-t v4 6/9] lib/intel_batchbuffer: Remove unused includes
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 6/9] lib/intel_batchbuffer: Remove unused includes Karolina Stolarek
@ 2023-03-20  6:38   ` Zbigniew Kempczyński
  0 siblings, 0 replies; 18+ messages in thread
From: Zbigniew Kempczyński @ 2023-03-20  6:38 UTC (permalink / raw)
  To: Karolina Stolarek; +Cc: igt-dev

On Fri, Mar 17, 2023 at 01:37:08PM +0100, Karolina Stolarek wrote:
> The library includes a lot of headers and most of them are
> not needed.
> 
> Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
> ---
>  lib/intel_batchbuffer.c | 22 ++++------------------
>  1 file changed, 4 insertions(+), 18 deletions(-)
> 
> diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
> index a5157194..1b999ca5 100644
> --- a/lib/intel_batchbuffer.c
> +++ b/lib/intel_batchbuffer.c
> @@ -25,35 +25,21 @@
>   *
>   **************************************************************************/
>  
> -#include <inttypes.h>
> -#include <poll.h>
> -#include <stdlib.h>
> -#include <stdio.h>
> -#include <string.h>
> -#include <assert.h>
>  #include <search.h>
> +#include <glib.h>
>  
> -#include "drm.h"
> -#include "drmtest.h"
>  #include "i915/gem_create.h"
>  #include "intel_batchbuffer.h"
>  #include "intel_bufops.h"
>  #include "intel_chipset.h"
> -#include "intel_reg.h"
> -#include "veboxcopy.h"
>  #include "rendercopy.h"
>  #include "media_fill.h"
> -#include "ioctl_wrappers.h"
> -#include "sw_sync.h"
> -#include "i915/gem_mman.h"
>  #include "media_spin.h"
> +#include "i915/gem_mman.h"
> +#include "veboxcopy.h"

Those two changed place, not a blocker at all:

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

--
Zbigniew


> +#include "sw_sync.h"
>  #include "gpgpu_fill.h"
> -#include "igt_aux.h"
> -#include "i830_reg.h"
>  #include "huc_copy.h"
> -#include <glib.h>
> -
> -#include <i915_drm.h>
>  
>  #define BCS_SWCTRL 0x22200
>  #define BCS_SRC_Y (1 << 0)
> -- 
> 2.25.1
> 

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

* Re: [igt-dev] [PATCH i-g-t v4 8/9] lib/intel_batchbuffer: Handle no support for Tile Y
  2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 8/9] lib/intel_batchbuffer: Handle no support for Tile Y Karolina Stolarek
  2023-03-17 14:16   ` Das, Nirmoy
@ 2023-03-20  6:40   ` Zbigniew Kempczyński
  1 sibling, 0 replies; 18+ messages in thread
From: Zbigniew Kempczyński @ 2023-03-20  6:40 UTC (permalink / raw)
  To: Karolina Stolarek; +Cc: igt-dev

On Fri, Mar 17, 2023 at 01:37:10PM +0100, Karolina Stolarek wrote:
> Newer generations stopped supporting legacy Tile Y format.
> In order to do a Y-Major blit, the command has to use Tile4
> format, which requires setting specific blits in the first
> bit group of the XY_FAST_COPY_BLT command.
> 
> Rewrite fast_copy_dword1 function to always set them when
> a platform doesn't support the legacy format. Update calls
> to the function to include file descriptor parameter.
> 
> Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
> Cc: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
> ---
>  lib/intel_batchbuffer.c | 26 +++++++++++++++++---------
>  lib/intel_batchbuffer.h |  2 +-
>  tests/i915/gem_blits.c  |  9 ++++++---
>  3 files changed, 24 insertions(+), 13 deletions(-)
> 
> diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
> index 1b999ca5..24728d4a 100644
> --- a/lib/intel_batchbuffer.c
> +++ b/lib/intel_batchbuffer.c
> @@ -32,7 +32,6 @@
>  #include "intel_batchbuffer.h"
>  #include "intel_bufops.h"
>  #include "intel_chipset.h"
> -#include "rendercopy.h"
>  #include "media_fill.h"
>  #include "media_spin.h"
>  #include "i915/gem_mman.h"
> @@ -40,6 +39,7 @@
>  #include "sw_sync.h"
>  #include "gpgpu_fill.h"
>  #include "huc_copy.h"
> +#include "i915/i915_blt.h"
>  
>  #define BCS_SWCTRL 0x22200
>  #define BCS_SRC_Y (1 << 0)
> @@ -122,18 +122,26 @@ uint32_t fast_copy_dword0(unsigned int src_tiling,
>  	return dword0;
>  }
>  
> +static bool new_tile_y_format(unsigned int tiling)
> +{
> +	return tiling == T_YFMAJOR || tiling == T_TILE4;
> +}
> +
>  uint32_t fast_copy_dword1(unsigned int src_tiling,
>  			  unsigned int dst_tiling,
> -			  int bpp)
> +			  int bpp, int fd)

Use fd as first argument, other api also uses it as first arg;
then:

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

--
Zbigniew

>  {
>  	uint32_t dword1 = 0;
>  
> -	if (src_tiling == I915_TILING_Yf || src_tiling == I915_TILING_4)
> -		/* Repurposed as Tile-4 on DG2 */
> -		dword1 |= XY_FAST_COPY_SRC_TILING_Yf;
> -	if (dst_tiling == I915_TILING_Yf || dst_tiling == I915_TILING_4)
> -		/* Repurposed as Tile-4 on DG2 */
> -		dword1 |= XY_FAST_COPY_DST_TILING_Yf;
> +	if (blt_fast_copy_supports_tiling(fd, T_YMAJOR)) {
> +		dword1 |= new_tile_y_format(src_tiling)
> +				? XY_FAST_COPY_SRC_TILING_Yf : 0;
> +		dword1 |= new_tile_y_format(dst_tiling)
> +				? XY_FAST_COPY_DST_TILING_Yf : 0;
> +	} else {
> +		/* Always set bits for platforms that don't support legacy TileY */
> +		dword1 |= XY_FAST_COPY_SRC_TILING_Yf | XY_FAST_COPY_DST_TILING_Yf;
> +	}
>  
>  	switch (bpp) {
>  	case 8:
> @@ -582,7 +590,7 @@ void igt_blitter_fast_copy__raw(int fd,
>  	src_pitch = fast_copy_pitch(src_stride, src_tiling);
>  	dst_pitch = fast_copy_pitch(dst_stride, dst_tiling);
>  	dword0 = fast_copy_dword0(src_tiling, dst_tiling);
> -	dword1 = fast_copy_dword1(src_tiling, dst_tiling, bpp);
> +	dword1 = fast_copy_dword1(src_tiling, dst_tiling, bpp, fd);
>  
>  	CHECK_RANGE(src_x); CHECK_RANGE(src_y);
>  	CHECK_RANGE(dst_x); CHECK_RANGE(dst_y);
> diff --git a/lib/intel_batchbuffer.h b/lib/intel_batchbuffer.h
> index aed1d575..fb244c2b 100644
> --- a/lib/intel_batchbuffer.h
> +++ b/lib/intel_batchbuffer.h
> @@ -35,7 +35,7 @@ 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);
> +			  int bpp, int fd);
>  void igt_blitter_copy(int fd,
>  		      uint64_t ahnd,
>  		      uint32_t ctx,
> diff --git a/tests/i915/gem_blits.c b/tests/i915/gem_blits.c
> index 1414826c..0d4655f8 100644
> --- a/tests/i915/gem_blits.c
> +++ b/tests/i915/gem_blits.c
> @@ -224,7 +224,8 @@ static void buffer_set_tiling(const struct device *device,
>  		batch[i++] = 3 << 24 | 0xcc << 16 | pitch;
>  	} else if (blt_has_fast_copy(device->fd)) {
>  		batch[i++] = fast_copy_dword0(buffer->tiling, tiling);
> -		dword1 = fast_copy_dword1(buffer->tiling, tiling, 32);
> +		dword1 = fast_copy_dword1(buffer->tiling, tiling,
> +					  32, device->fd);
>  		batch[i++] = dword1 | pitch;
>  	} else {
>  		igt_assert_f(0, "No supported blit command found\n");
> @@ -371,7 +372,8 @@ static bool blit_to_linear(const struct device *device,
>  		batch[i++] = 3 << 24 | 0xcc << 16 | buffer->stride;
>  	} else if (blt_has_fast_copy(device->fd)) {
>  		batch[i++] = fast_copy_dword0(buffer->tiling, I915_TILING_NONE);
> -		dword1 = fast_copy_dword1(buffer->tiling, I915_TILING_NONE, 32);
> +		dword1 = fast_copy_dword1(buffer->tiling, I915_TILING_NONE,
> +					  32, device->fd);
>  		batch[i++] = dword1 | buffer->stride;
>  	} else {
>  		igt_assert_f(0, "No supported blit command found\n");
> @@ -719,7 +721,8 @@ blit(const struct device *device,
>  		batch[i++] = 3 << 24 | 0xcc << 16 | pitch;
>  	} else if (blt_has_fast_copy(device->fd)) {
>  		batch[i++] = fast_copy_dword0(src->tiling, dst->tiling);
> -		dword1 = fast_copy_dword1(src->tiling, dst->tiling, 32);
> +		dword1 = fast_copy_dword1(src->tiling, dst->tiling,
> +					  32, device->fd);
>  		batch[i++] = dword1 | pitch;
>  	} else {
>  		igt_assert_f(0, "No supported blit command found\n");
> -- 
> 2.25.1
> 

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

* Re: [igt-dev] [PATCH i-g-t v4 8/9] lib/intel_batchbuffer: Handle no support for Tile Y
  2023-03-17 14:16   ` Das, Nirmoy
@ 2023-03-20  7:49     ` Karolina Stolarek
  0 siblings, 0 replies; 18+ messages in thread
From: Karolina Stolarek @ 2023-03-20  7:49 UTC (permalink / raw)
  To: Das, Nirmoy; +Cc: igt-dev

Hi Nirmoy,

Thanks for taking a look at the series :)

On 17.03.2023 15:16, Das, Nirmoy wrote:
> 
> On 3/17/2023 1:37 PM, Karolina Stolarek wrote:
>> Newer generations stopped supporting legacy Tile Y format.
>> In order to do a Y-Major blit, the command has to use Tile4
>> format, which requires setting specific blits in the first
>> bit group of the XY_FAST_COPY_BLT command.
>>
>> Rewrite fast_copy_dword1 function to always set them when
>> a platform doesn't support the legacy format. Update calls
>> to the function to include file descriptor parameter.
>>
>> Signed-off-by: Karolina Stolarek <karolina.stolarek@intel.com>
>> Cc: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
>> ---
>>   lib/intel_batchbuffer.c | 26 +++++++++++++++++---------
>>   lib/intel_batchbuffer.h |  2 +-
>>   tests/i915/gem_blits.c  |  9 ++++++---
>>   3 files changed, 24 insertions(+), 13 deletions(-)
>>
>> diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
>> index 1b999ca5..24728d4a 100644
>> --- a/lib/intel_batchbuffer.c
>> +++ b/lib/intel_batchbuffer.c
>> @@ -32,7 +32,6 @@
>>   #include "intel_batchbuffer.h"
>>   #include "intel_bufops.h"
>>   #include "intel_chipset.h"
>> -#include "rendercopy.h"
>>   #include "media_fill.h"
>>   #include "media_spin.h"
>>   #include "i915/gem_mman.h"
>> @@ -40,6 +39,7 @@
>>   #include "sw_sync.h"
>>   #include "gpgpu_fill.h"
>>   #include "huc_copy.h"
>> +#include "i915/i915_blt.h"
>>   #define BCS_SWCTRL 0x22200
>>   #define BCS_SRC_Y (1 << 0)
>> @@ -122,18 +122,26 @@ uint32_t fast_copy_dword0(unsigned int src_tiling,
>>       return dword0;
>>   }
>> +static bool new_tile_y_format(unsigned int tiling)
>> +{
>> +    return tiling == T_YFMAJOR || tiling == T_TILE4;
>> +}
>> +
>>   uint32_t fast_copy_dword1(unsigned int src_tiling,
>>                 unsigned int dst_tiling,
>> -              int bpp)
>> +              int bpp, int fd)
>>   {
>>       uint32_t dword1 = 0;
>> -    if (src_tiling == I915_TILING_Yf || src_tiling == I915_TILING_4)
>> -        /* Repurposed as Tile-4 on DG2 */
>> -        dword1 |= XY_FAST_COPY_SRC_TILING_Yf;
>> -    if (dst_tiling == I915_TILING_Yf || dst_tiling == I915_TILING_4)
>> -        /* Repurposed as Tile-4 on DG2 */
>> -        dword1 |= XY_FAST_COPY_DST_TILING_Yf;
>> +    if (blt_fast_copy_supports_tiling(fd, T_YMAJOR)) {
>> +        dword1 |= new_tile_y_format(src_tiling)
>> +                ? XY_FAST_COPY_SRC_TILING_Yf : 0;
> 
> 
> nit: Let it new_tile_y_format()  return "0 or 
> XY_FAST_COPY_SRC_TILING_Yf" to avoid extra line.

hm, I'm not sure if I follow. XY_FAST_COPY_SRC_TILING_Yf and 
XY_FAST_COPY_DST_TILING_Yf set different bits in dword1 (31 and 30 
respectively), so I think I want to just check the tile format in that 
function. Hope it's fine if I keep it this way.

All the best,
Karolina

> 
> 
> Regards,
> 
> Nirmoy
> 
> 
>> +        dword1 |= new_tile_y_format(dst_tiling)
>> +                ? XY_FAST_COPY_DST_TILING_Yf : 0;
>> +    } else {
>> +        /* Always set bits for platforms that don't support legacy 
>> TileY */
>> +        dword1 |= XY_FAST_COPY_SRC_TILING_Yf | 
>> XY_FAST_COPY_DST_TILING_Yf;
>> +    }
>>       switch (bpp) {
>>       case 8:
>> @@ -582,7 +590,7 @@ void igt_blitter_fast_copy__raw(int fd,
>>       src_pitch = fast_copy_pitch(src_stride, src_tiling);
>>       dst_pitch = fast_copy_pitch(dst_stride, dst_tiling);
>>       dword0 = fast_copy_dword0(src_tiling, dst_tiling);
>> -    dword1 = fast_copy_dword1(src_tiling, dst_tiling, bpp);
>> +    dword1 = fast_copy_dword1(src_tiling, dst_tiling, bpp, fd);
>>       CHECK_RANGE(src_x); CHECK_RANGE(src_y);
>>       CHECK_RANGE(dst_x); CHECK_RANGE(dst_y);
>> diff --git a/lib/intel_batchbuffer.h b/lib/intel_batchbuffer.h
>> index aed1d575..fb244c2b 100644
>> --- a/lib/intel_batchbuffer.h
>> +++ b/lib/intel_batchbuffer.h
>> @@ -35,7 +35,7 @@ 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);
>> +              int bpp, int fd);
>>   void igt_blitter_copy(int fd,
>>                 uint64_t ahnd,
>>                 uint32_t ctx,
>> diff --git a/tests/i915/gem_blits.c b/tests/i915/gem_blits.c
>> index 1414826c..0d4655f8 100644
>> --- a/tests/i915/gem_blits.c
>> +++ b/tests/i915/gem_blits.c
>> @@ -224,7 +224,8 @@ static void buffer_set_tiling(const struct device 
>> *device,
>>           batch[i++] = 3 << 24 | 0xcc << 16 | pitch;
>>       } else if (blt_has_fast_copy(device->fd)) {
>>           batch[i++] = fast_copy_dword0(buffer->tiling, tiling);
>> -        dword1 = fast_copy_dword1(buffer->tiling, tiling, 32);
>> +        dword1 = fast_copy_dword1(buffer->tiling, tiling,
>> +                      32, device->fd);
>>           batch[i++] = dword1 | pitch;
>>       } else {
>>           igt_assert_f(0, "No supported blit command found\n");
>> @@ -371,7 +372,8 @@ static bool blit_to_linear(const struct device 
>> *device,
>>           batch[i++] = 3 << 24 | 0xcc << 16 | buffer->stride;
>>       } else if (blt_has_fast_copy(device->fd)) {
>>           batch[i++] = fast_copy_dword0(buffer->tiling, 
>> I915_TILING_NONE);
>> -        dword1 = fast_copy_dword1(buffer->tiling, I915_TILING_NONE, 32);
>> +        dword1 = fast_copy_dword1(buffer->tiling, I915_TILING_NONE,
>> +                      32, device->fd);
>>           batch[i++] = dword1 | buffer->stride;
>>       } else {
>>           igt_assert_f(0, "No supported blit command found\n");
>> @@ -719,7 +721,8 @@ blit(const struct device *device,
>>           batch[i++] = 3 << 24 | 0xcc << 16 | pitch;
>>       } else if (blt_has_fast_copy(device->fd)) {
>>           batch[i++] = fast_copy_dword0(src->tiling, dst->tiling);
>> -        dword1 = fast_copy_dword1(src->tiling, dst->tiling, 32);
>> +        dword1 = fast_copy_dword1(src->tiling, dst->tiling,
>> +                      32, device->fd);
>>           batch[i++] = dword1 | pitch;
>>       } else {
>>           igt_assert_f(0, "No supported blit command found\n");

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

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

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-17 12:37 [igt-dev] [PATCH i-g-t v4 0/9] Update gem_blits for newer generations Karolina Stolarek
2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 1/9] lib/i915_blt: Add helpers to check XY_SRC_COPY support Karolina Stolarek
2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 2/9] lib/intel_cmds_info: Correct tiling formats for XY_SRC_COPY Karolina Stolarek
2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 3/9] lib/intel_device_info: Add tiling information for early gens Karolina Stolarek
2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 4/9] tests/i915/gem_blits: Use new copy instruction Karolina Stolarek
2023-03-20  6:35   ` Zbigniew Kempczyński
2023-03-20  6:36   ` Zbigniew Kempczyński
2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 5/9] lib/intel_batchbuffer: Add wrapper API to use XY_FAST_COPY_BLT/XY_SRC_BLT Karolina Stolarek
2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 6/9] lib/intel_batchbuffer: Remove unused includes Karolina Stolarek
2023-03-20  6:38   ` Zbigniew Kempczyński
2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 7/9] lib/intel_cmds_info: Reorder blt_tiling_type enum Karolina Stolarek
2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 8/9] lib/intel_batchbuffer: Handle no support for Tile Y Karolina Stolarek
2023-03-17 14:16   ` Das, Nirmoy
2023-03-20  7:49     ` Karolina Stolarek
2023-03-20  6:40   ` Zbigniew Kempczyński
2023-03-17 12:37 ` [igt-dev] [PATCH i-g-t v4 9/9] tests/gem_blits: Use intel_cmds_info library Karolina Stolarek
2023-03-17 14:38 ` [igt-dev] ✓ Fi.CI.BAT: success for Update gem_blits for newer generations (rev4) Patchwork
2023-03-17 15:44 ` [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.