From: Andrzej Hajda <andrzej.hajda@intel.com>
To: igt-dev@lists.freedesktop.org
Cc: "Dominik Grzegorzek" <dominik.grzegorzek@intel.com>,
"Zbigniew Kempczyński" <zbigniew.kempczynski@intel.com>,
"Gwan-gyeong Mun" <gwan-gyeong.mun@intel.com>,
"Kamil Konieczny" <kamil.konieczny@linux.intel.com>,
"Christoph Manszewski" <christoph.manszewski@intel.com>,
"Andrzej Hajda" <andrzej.hajda@intel.com>
Subject: [PATCH v3 3/4] lib/gpgpu_shader: pass surface desription to shaders via inline data
Date: Thu, 21 Nov 2024 18:12:51 +0100 [thread overview]
Message-ID: <20241121-gpgpu_send_rework-v3-3-0b6aa48ab006@intel.com> (raw)
In-Reply-To: <20241121-gpgpu_send_rework-v3-0-0b6aa48ab006@intel.com>
Since newer architectures require stateless load/stores we need to pass
surface description to the shader. Instead of doing it for every call
we can use inline data which is passed by COMPUTE_WALKER and is stored
in GRF register r1.
Signed-off-by: Andrzej Hajda <andrzej.hajda@intel.com>
---
lib/gpgpu_shader.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/lib/gpgpu_shader.c b/lib/gpgpu_shader.c
index 363435e7efd3..518423158880 100644
--- a/lib/gpgpu_shader.c
+++ b/lib/gpgpu_shader.c
@@ -148,6 +148,16 @@ __xelp_gpgpu_execfunc(struct intel_bb *ibb,
engine | I915_EXEC_NO_RELOC, false);
}
+static void
+fill_inline_data(uint32_t *inline_data, uint64_t target_offset, struct intel_buf *target)
+{
+ igt_assert(target->surface[0].stride == intel_buf_width(target) * target->bpp/8);
+ *inline_data++ = lower_32_bits(target_offset);
+ *inline_data++ = upper_32_bits(target_offset);
+ *inline_data++ = target->surface[0].stride;
+ *inline_data++ = intel_buf_height(target);
+}
+
static void
__xehp_gpgpu_execfunc(struct intel_bb *ibb,
struct intel_buf *target,
@@ -159,6 +169,7 @@ __xehp_gpgpu_execfunc(struct intel_bb *ibb,
struct xehp_interface_descriptor_data idd;
uint32_t sip_offset;
uint64_t engine;
+ uint32_t *inline_data;
intel_bb_add_intel_buf(ibb, target, true);
@@ -186,7 +197,10 @@ __xehp_gpgpu_execfunc(struct intel_bb *ibb,
if (sip_offset)
emit_sip(ibb, sip_offset);
+ /* Inline data is at 31th/32th dword of COMPUTE_WALKER, BSpec: 67028 */
+ inline_data = intel_bb_ptr(ibb) + 4 * (shdr->gen_ver < 2000 ? 31 : 32);
xehp_emit_compute_walk(ibb, 0, 0, x_dim * 16, y_dim, &idd, 0x0);
+ fill_inline_data(inline_data, CANONICAL(target->addr.offset), target);
intel_bb_out(ibb, MI_BATCH_BUFFER_END);
intel_bb_ptr_align(ibb, 32);
@@ -217,10 +231,18 @@ void gpgpu_shader_exec(struct intel_bb *ibb,
struct gpgpu_shader *sip,
uint64_t ring, bool explicit_engine)
{
+ uint64_t ahnd;
+
igt_require(shdr->gen_ver >= SUPPORTED_GEN_VER);
igt_assert(ibb->size >= PAGE_SIZE);
igt_assert(ibb->ptr == ibb->batch);
+ ahnd = intel_allocator_open_full(ibb->fd, 0, 0, 0, INTEL_ALLOCATOR_SIMPLE,
+ ALLOC_STRATEGY_LOW_TO_HIGH, 0);
+ target->addr.offset = intel_allocator_alloc(ahnd, target->handle,
+ target->surface[0].size, 0);
+ intel_allocator_close(ahnd);
+
if (shdr->gen_ver >= 1250)
__xehp_gpgpu_execfunc(ibb, target, x_dim, y_dim, shdr, sip,
ring, explicit_engine);
--
2.34.1
next prev parent reply other threads:[~2024-11-21 17:13 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-21 17:12 [PATCH v3 0/4] lib/gpgpu_shader: simplify load/store shaders and add Xe3 support Andrzej Hajda
2024-11-21 17:12 ` [PATCH v3 1/4] scripts/generate_iga64_codes: add iga64_macros.h to checksum calculation Andrzej Hajda
2024-11-21 17:12 ` [PATCH v3 2/4] lib/gpgpu_shader: simplify load/store shaders Andrzej Hajda
2024-11-22 14:05 ` Grzegorzek, Dominik
2024-11-22 14:22 ` Hajda, Andrzej
2024-11-22 14:28 ` Grzegorzek, Dominik
2024-11-21 17:12 ` Andrzej Hajda [this message]
2024-11-22 14:27 ` [PATCH v3 3/4] lib/gpgpu_shader: pass surface desription to shaders via inline data Grzegorzek, Dominik
2024-11-21 17:12 ` [PATCH v3 4/4] lib/gpgpu_shader: add support for Xe3 platforms Andrzej Hajda
2024-11-22 14:11 ` Grzegorzek, Dominik
2024-11-22 14:24 ` Hajda, Andrzej
2024-11-21 22:40 ` ✓ Xe.CI.BAT: success for lib/gpgpu_shader: simplify load/store shaders and add Xe3 support Patchwork
2024-11-21 22:46 ` ✓ i915.CI.BAT: " Patchwork
2024-11-22 12:34 ` ✗ Xe.CI.Full: failure " Patchwork
2024-11-24 13:14 ` ✗ i915.CI.Full: " Patchwork
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=20241121-gpgpu_send_rework-v3-3-0b6aa48ab006@intel.com \
--to=andrzej.hajda@intel.com \
--cc=christoph.manszewski@intel.com \
--cc=dominik.grzegorzek@intel.com \
--cc=gwan-gyeong.mun@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=kamil.konieczny@linux.intel.com \
--cc=zbigniew.kempczynski@intel.com \
/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 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.