[PATCH i-g-t v2 07/10] tests/intel/xe_drm_fdinfo: Add an iterator for virtual engines
Lucas De Marchi
lucas.demarchi at intel.com
Thu Jul 11 13:34:03 UTC 2024
On Tue, Jul 02, 2024 at 05:25:29PM GMT, Umesh Nerlige Ramappa wrote:
>Add a helper iterator for virtual engines.
>
>Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa at intel.com>
>---
> tests/intel/xe_drm_fdinfo.c | 29 +++++++++++++++++++++++++++++
> 1 file changed, 29 insertions(+)
>
>diff --git a/tests/intel/xe_drm_fdinfo.c b/tests/intel/xe_drm_fdinfo.c
>index f2051c422..9d3d1b285 100644
>--- a/tests/intel/xe_drm_fdinfo.c
>+++ b/tests/intel/xe_drm_fdinfo.c
>@@ -90,6 +90,34 @@ static const uint64_t batch_addr[] = {
> 0x1d0000,
> 0x1e0000,
> };
>+
>+#define MAX_GTS 2
>+#define MAX_INSTANCE 9
>+struct virtual_hwe {
>+ struct drm_xe_engine_class_instance eci[MAX_INSTANCE];
>+ int count;
>+} vhwe[MAX_GTS][DRM_XE_ENGINE_CLASS_COMPUTE + 1] = {};
there's no concept of "virtual engine". I think this is something
brought over from i915? Is it related to the width when submitting?
Please add a comment for the confused reader and it's probably worth
this abstraction to be outside this test. +Matt Brost
>+
>+static void list_virtual_engines(int fd)
list? shouldn't it be virtual_engines_init()?
Lucas De Marchi
>+{
>+ struct drm_xe_engine_class_instance *hwe;
>+
>+ xe_for_each_engine(fd, hwe) {
>+ struct virtual_hwe *v;
>+
>+ igt_assert(hwe->gt_id < MAX_GTS);
>+ igt_assert(hwe->engine_class < DRM_XE_ENGINE_CLASS_COMPUTE + 1);
>+ v = &vhwe[hwe->gt_id][hwe->engine_class];
>+
>+ igt_assert(v->count < MAX_INSTANCE);
>+ v->eci[v->count++] = *hwe;
>+ }
>+}
>+#define xe_for_each_multi_engine(__fd, __hwe, __count) \
>+ for (int igt_unique(gt) = 0; igt_unique(gt) < MAX_GTS; igt_unique(gt)++) \
>+ for (int igt_unique(c) = 0; igt_unique(c) < DRM_XE_ENGINE_CLASS_COMPUTE + 1; igt_unique(c)++) \
>+ for_if((__hwe = &vhwe[igt_unique(gt)][igt_unique(c)].eci[0]) && ((__count = vhwe[igt_unique(gt)][igt_unique(c)].count) > 1))
>+
> static void read_engine_cycles(int xe, struct pceu_cycles *pceu)
> {
> struct drm_client_fdinfo info = { };
>@@ -678,6 +706,7 @@ igt_main
> xe = drm_open_driver(DRIVER_XE);
> igt_require_xe(xe);
> igt_require(igt_parse_drm_fdinfo(xe, &info, NULL, 0, NULL, 0));
>+ list_virtual_engines(xe);
> }
>
> igt_describe("Check if basic fdinfo content is present for memory");
>--
>2.38.1
>
More information about the igt-dev
mailing list