broadcom/simulator: Add DRM_IOCTL_V3D_GET_COUNTER to simulator

As this new IOCTL was introduced in the kernel, mirror the change in
the simulator.

Signed-off-by: Maíra Canal <mcanal@igalia.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29154>
This commit is contained in:
Maíra Canal 2024-05-12 09:33:57 -03:00 committed by Marge Bot
parent e630812b43
commit 3e8b2fe053
3 changed files with 31 additions and 0 deletions

View file

@ -1099,6 +1099,10 @@ v3d_simulator_ioctl(int fd, unsigned long request, void *args)
case DRM_IOCTL_V3D_PERFMON_GET_VALUES:
return v3d_simulator_perfmon_get_values_ioctl(fd, args);
case DRM_IOCTL_V3D_PERFMON_GET_COUNTER:
return v3d_X_simulator(perfmon_get_counter_ioctl)(sim_state.perfcnt_total,
args);
case DRM_IOCTL_GEM_OPEN:
case DRM_IOCTL_GEM_FLINK:
return drmIoctl(fd, request, args);

View file

@ -302,6 +302,30 @@ v3dX(simulator_get_param_ioctl)(struct v3d_hw *v3d,
abort();
}
int
v3dX(simulator_perfmon_get_counter_ioctl)(uint32_t perfcnt_total,
struct drm_v3d_perfmon_get_counter *args)
{
const char **counter = NULL;
/* Make sure that the counter ID is valid */
if (args->counter >= perfcnt_total)
return -1;
counter = v3d_performance_counters[args->counter];
memcpy(args->name, counter[V3D_PERFCNT_NAME],
DRM_V3D_PERFCNT_MAX_NAME);
memcpy(args->category, counter[V3D_PERFCNT_CATEGORY],
DRM_V3D_PERFCNT_MAX_CATEGORY);
memcpy(args->description, counter[V3D_PERFCNT_DESCRIPTION],
DRM_V3D_PERFCNT_MAX_DESCRIPTION);
return 0;
}
static struct v3d_hw *v3d_isr_hw;

View file

@ -32,11 +32,14 @@ struct drm_v3d_get_param;
struct drm_v3d_submit_cl;
struct drm_v3d_submit_tfu;
struct drm_v3d_submit_csd;
struct drm_v3d_perfmon_get_counter;
void v3dX(simulator_init_regs)(struct v3d_hw *v3d);
int v3dX(simulator_get_param_ioctl)(struct v3d_hw *v3d,
uint32_t perfcnt_total,
struct drm_v3d_get_param *args);
int v3dX(simulator_perfmon_get_counter_ioctl)(uint32_t perfcnt_total,
struct drm_v3d_perfmon_get_counter *args);
void v3dX(simulator_submit_cl_ioctl)(struct v3d_hw *v3d,
struct drm_v3d_submit_cl *args,
uint32_t gmp_offset);