[PATCH i-g-t v5 04/10] tests/imagination: Add GPU ID test
Robert Mazur <[email protected]> Tue, 28 Jul 2026 09:18:59 +0200
| Newsgroups | org.freedesktop.lists.igt-dev |
|---|---|
| Message-ID | <20260728-test-imagination-add-support-v5-4-33049f0d1937@imgtec.com> |
From: Frank Binns <[email protected]> Add a basic GPU ID validation subtest. Signed-off-by: Frank Binns <[email protected]> Signed-off-by: Donald Robson <[email protected]> Signed-off-by: Robert Mazur <[email protected]> Acked-by: Kamil Konieczny <[email protected]> --- tests/imagination/meson.build | 1 + tests/imagination/pvr_gpu_info.c | 54 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/tests/imagination/meson.build b/tests/imagination/meson.build index 62930da2b..c5899972b 100644 --- a/tests/imagination/meson.build +++ b/tests/imagination/meson.build @@ -1,5 +1,6 @@ pvr_progs = [ 'pvr_dev_query', 'pvr_gem', + 'pvr_gpu_info', ] pvr_deps = test_deps diff --git a/tests/imagination/pvr_gpu_info.c b/tests/imagination/pvr_gpu_info.c new file mode 100644 index 000000000..24ab18491 --- /dev/null +++ b/tests/imagination/pvr_gpu_info.c @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: GPL-2.0 or MIT +/* Copyright (c) 2026 Imagination Technologies Ltd. All Rights Reserved */ + +#include <errno.h> +#include <stdbool.h> +#include <stdint.h> + +#include "igt.h" +#include "igt_pvr.h" + +#include "pvr_drm.h" + +IGT_TEST_DESCRIPTION("Check that igt/imagination knows about this GPU ID"); + +static bool +has_known_gpu_id(int fd, const struct drm_pvr_dev_query_gpu_info *gpu_info) +{ +#define PVR_BVNC_ID(b, v, n, c) \ + (((uint64_t)(b) << 48) | \ + ((uint64_t)(v) << 32) | \ + ((uint64_t)(n) << 16) | \ + ((uint64_t)(c))) + + switch (gpu_info->gpu_id) { + case PVR_BVNC_ID(4, 40, 2, 51): + case PVR_BVNC_ID(33, 15, 11, 3): + case PVR_BVNC_ID(36, 53, 104, 796): + break; + default: + igt_warn("Unknown GPU ID: 0x%016llx\n", gpu_info->gpu_id); + return false; + } +#undef PVR_BVNC_ID + + igt_info("GPU BVNC: %u.%u.%u.%u\n", + (unsigned int)(gpu_info->gpu_id >> 48 & 0xffff), + (unsigned int)(gpu_info->gpu_id >> 32 & 0xffff), + (unsigned int)(gpu_info->gpu_id >> 16 & 0xffff), + (unsigned int)(gpu_info->gpu_id & 0xffff)); + + return true; +} + +int igt_simple_main() +{ + int fd = drm_open_driver(DRIVER_POWERVR); + struct drm_pvr_dev_query_gpu_info gpu_info = {0}; + + igt_pvr_ioctl_dev_query(fd, DRM_PVR_DEV_QUERY_GPU_INFO_GET, + sizeof(gpu_info), &gpu_info, 0); + + igt_assert(has_known_gpu_id(fd, &gpu_info)); + igt_assert_neq(gpu_info.num_phantoms, 0); +} -- 2.43.0