From: Lucas De Marchi <lucas.demarchi@intel.com>
To: igt-dev@lists.freedesktop.org
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Subject: [igt-dev] [PATCH i-g-t v3 12/13] lib/intel_blt: Support xe2 in xy-fast-copy command
Date: Wed, 4 Oct 2023 08:49:21 -0700 [thread overview]
Message-ID: <20231004154922.3478014-13-lucas.demarchi@intel.com> (raw)
In-Reply-To: <20231004154922.3478014-1-lucas.demarchi@intel.com>
Xe2 xy-fast-copy command is slightly different, with dw01 and dw07
having a few differences: 1) different bitrange for mocs (it was
previously absent in dw07); 2) no dst_memory, src_memory;
3) hardcoded dst_type_y and src_type_y to 1.
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
---
lib/intel_blt.c | 82 ++++++++++++++++++++++++++++++++++++-------------
1 file changed, 61 insertions(+), 21 deletions(-)
diff --git a/lib/intel_blt.c b/lib/intel_blt.c
index 4e0fe6320..0d00f0fbc 100644
--- a/lib/intel_blt.c
+++ b/lib/intel_blt.c
@@ -1185,16 +1185,29 @@ struct gen12_fast_copy_data {
uint32_t client: BITRANGE(29, 31);
} dw00;
- struct {
- uint32_t dst_pitch: BITRANGE(0, 15);
- uint32_t rsvd1: BITRANGE(16, 23);
- uint32_t color_depth: BITRANGE(24, 26);
- uint32_t rsvd0: BITRANGE(27, 27);
- uint32_t dst_memory: BITRANGE(28, 28);
- uint32_t src_memory: BITRANGE(29, 29);
- uint32_t dst_type_y: BITRANGE(30, 30);
- uint32_t src_type_y: BITRANGE(31, 31);
- } dw01;
+ union {
+ struct {
+ uint32_t dst_pitch: BITRANGE(0, 15);
+ uint32_t rsvd1: BITRANGE(16, 23);
+ uint32_t color_depth: BITRANGE(24, 26);
+ uint32_t rsvd0: BITRANGE(27, 27);
+ uint32_t dst_memory: BITRANGE(28, 28);
+ uint32_t src_memory: BITRANGE(29, 29);
+ uint32_t dst_type_y: BITRANGE(30, 30);
+ uint32_t src_type_y: BITRANGE(31, 31);
+ } dw01;
+ struct {
+ uint32_t dst_pitch: BITRANGE(0, 15);
+ uint32_t rsvd2: BITRANGE(16, 16);
+ uint32_t pxp: BITRANGE(16, 17);
+ uint32_t rsvd1: BITRANGE(18, 19);
+ uint32_t dst_mocs_index: BITRANGE(20, 23);
+ uint32_t color_depth: BITRANGE(24, 26);
+ uint32_t rsvd0: BITRANGE(27, 29);
+ uint32_t dst_type_y: BITRANGE(30, 30);
+ uint32_t src_type_y: BITRANGE(31, 31);
+ } dw01_xe2;
+ };
struct {
int32_t dst_x1: BITRANGE(0, 15);
@@ -1219,10 +1232,20 @@ struct gen12_fast_copy_data {
int32_t src_y1: BITRANGE(16, 31);
} dw06;
- struct {
- uint32_t src_pitch: BITRANGE(0, 15);
- uint32_t rsvd0: BITRANGE(16, 31);
- } dw07;
+ union {
+ struct {
+ uint32_t src_pitch: BITRANGE(0, 15);
+ uint32_t rsvd0: BITRANGE(16, 31);
+ } dw07;
+ struct {
+ uint32_t src_pitch: BITRANGE(0, 15);
+ uint32_t rsvd0: BITRANGE(16, 16);
+ uint32_t pxp: BITRANGE(17, 17);
+ uint32_t rsvd1: BITRANGE(18, 19);
+ uint32_t src_mocs_index: BITRANGE(20, 23);
+ uint32_t rsvd2: BITRANGE(24, 31);
+ } dw07_xe2;
+ };
struct {
uint32_t src_address_lo;
@@ -1321,11 +1344,13 @@ uint64_t emit_blt_fast_copy(int fd,
uint64_t bb_pos,
bool emit_bbe)
{
+ unsigned int ip_ver = intel_graphics_ver(intel_get_drm_devid(fd));
struct gen12_fast_copy_data data = {};
uint64_t dst_offset, src_offset, bb_offset, alignment;
uint32_t bbe = MI_BATCH_BUFFER_END;
uint32_t *bb;
+
alignment = get_default_alignment(fd, blt->driver);
data.dw00.client = 0x2;
@@ -1334,12 +1359,22 @@ uint64_t emit_blt_fast_copy(int fd,
data.dw00.src_tiling = __fast_tiling(blt->src.tiling);
data.dw00.length = 8;
- data.dw01.dst_pitch = blt->dst.pitch;
- data.dw01.color_depth = __fast_color_depth(blt->color_depth);
- data.dw01.dst_memory = __memory_type(blt->fd, blt->driver, blt->dst.region);
- data.dw01.src_memory = __memory_type(blt->fd, blt->driver, blt->src.region);
- data.dw01.dst_type_y = __new_tile_y_type(blt->dst.tiling) ? 1 : 0;
- data.dw01.src_type_y = __new_tile_y_type(blt->src.tiling) ? 1 : 0;
+ if (ip_ver >= IP_VER(20, 0)) {
+ data.dw01_xe2.dst_pitch = blt->dst.pitch;
+ data.dw01_xe2.dst_mocs_index = blt->dst.mocs_index;
+ data.dw01_xe2.color_depth = __fast_color_depth(blt->color_depth);
+
+ /* Undefined behavior to leave as 0, must be set to 1 */
+ data.dw01_xe2.dst_type_y = 1;
+ data.dw01_xe2.src_type_y = 1;
+ } else {
+ data.dw01.dst_pitch = blt->dst.pitch;
+ data.dw01.color_depth = __fast_color_depth(blt->color_depth);
+ data.dw01.dst_memory = __memory_type(blt->fd, blt->driver, blt->dst.region);
+ data.dw01.src_memory = __memory_type(blt->fd, blt->driver, blt->src.region);
+ data.dw01.dst_type_y = __new_tile_y_type(blt->dst.tiling) ? 1 : 0;
+ data.dw01.src_type_y = __new_tile_y_type(blt->src.tiling) ? 1 : 0;
+ }
data.dw02.dst_x1 = blt->dst.x1;
data.dw02.dst_y1 = blt->dst.y1;
@@ -1359,7 +1394,12 @@ uint64_t emit_blt_fast_copy(int fd,
data.dw06.src_x1 = blt->src.x1;
data.dw06.src_y1 = blt->src.y1;
- data.dw07.src_pitch = blt->src.pitch;
+ if (ip_ver >= IP_VER(20, 0)) {
+ data.dw07_xe2.src_pitch = blt->src.pitch;
+ data.dw07_xe2.src_mocs_index = blt->src.mocs_index;
+ } else {
+ data.dw07.src_pitch = blt->src.pitch;
+ }
data.dw08.src_address_lo = src_offset;
data.dw09.src_address_hi = src_offset >> 32;
--
2.40.1
next prev parent reply other threads:[~2023-10-04 15:49 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-04 15:49 [igt-dev] [PATCH i-g-t v3 00/13] Adapt copy commands for Xe2 Lucas De Marchi
2023-10-04 15:49 ` [igt-dev] [PATCH i-g-t v3 01/13] lib/rendercopy: Use common mocs function Lucas De Marchi
2023-10-04 15:49 ` [igt-dev] [PATCH i-g-t v3 02/13] lib/gpu_cmds: Remove prefix from gen7_fill_binding_table() Lucas De Marchi
2023-10-04 15:49 ` [igt-dev] [PATCH i-g-t v3 03/13] lib/gpu_cmds: Reorder if/else ladder according to IP version Lucas De Marchi
2023-10-04 15:49 ` [igt-dev] [PATCH i-g-t v3 04/13] lib/gpu_cmds: Fork a gen9_fill_surface_state() Lucas De Marchi
2023-10-04 15:49 ` [igt-dev] [PATCH i-g-t v3 05/13] lib/gpu_cmds: Reduce scope of xehp_fill_surface_state() Lucas De Marchi
2023-10-04 15:49 ` [igt-dev] [PATCH i-g-t v3 06/13] lib: Fork gen9_media.h Lucas De Marchi
2023-10-04 15:49 ` [igt-dev] [PATCH i-g-t v3 07/13] lib/intel_mocs: Stop encoding mocs Lucas De Marchi
2023-10-09 18:54 ` Matt Roper
2023-10-04 15:49 ` [igt-dev] [PATCH i-g-t v3 08/13] lib/intel_mocs: Add Xe2 mocs indexes Lucas De Marchi
2023-10-09 18:56 ` Matt Roper
2023-10-04 15:49 ` [igt-dev] [PATCH i-g-t v3 09/13] lib/igt_draw: Add Xe2 mocs to XY_FAST_COLOR_BLT Lucas De Marchi
2023-10-04 15:49 ` [igt-dev] [PATCH i-g-t v3 10/13] lib/intel_mocs: Remove unused lefotver defines Lucas De Marchi
2023-10-04 15:49 ` [igt-dev] [PATCH i-g-t v3 11/13] lib/intel_blt: Support Xe2 in xy-block-copy command Lucas De Marchi
2023-10-04 15:49 ` Lucas De Marchi [this message]
2023-10-06 22:38 ` [igt-dev] [PATCH i-g-t v3.1 12/13] lib/intel_blt: Support xe2 in xy-fast-copy command Lucas De Marchi
2023-10-04 15:49 ` [igt-dev] [PATCH i-g-t v3 13/13] lib/intel_blt: Support xe2 in ctrl-surf-copy command Lucas De Marchi
2023-10-04 18:51 ` [igt-dev] ✗ Fi.CI.BAT: failure for Adapt copy commands for Xe2 (rev4) Patchwork
2023-10-04 19:36 ` [igt-dev] ✓ CI.xeBAT: success " Patchwork
2023-10-04 21:49 ` [igt-dev] ✓ Fi.CI.BAT: success for Adapt copy commands for Xe2 (rev5) Patchwork
2023-10-04 23:52 ` [igt-dev] ✓ CI.xeBAT: " Patchwork
2023-10-05 8:32 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2023-10-06 23:34 ` [igt-dev] ✓ Fi.CI.BAT: success for Adapt copy commands for Xe2 (rev6) Patchwork
2023-10-06 23:34 ` [igt-dev] ✓ CI.xeBAT: " Patchwork
2023-10-07 13:11 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2023-10-10 15:49 ` [igt-dev] [PATCH i-g-t v3 00/13] Adapt copy commands for Xe2 Lucas De Marchi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231004154922.3478014-13-lucas.demarchi@intel.com \
--to=lucas.demarchi@intel.com \
--cc=igt-dev@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox