v3dv: add support for TFU jobs in v71

This includes update the simulator.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25450>
This commit is contained in:
Alejandro Piñeiro
2021-11-17 11:33:59 +01:00
committed by Marge Bot
parent 8f2704a28d
commit 146ceadcf4
4 changed files with 88 additions and 13 deletions
+23 -13
View File
@@ -182,26 +182,36 @@ v3d_flush_caches(struct v3d_hw *v3d)
v3d_flush_l2t(v3d);
}
#if V3D_VERSION < 71
#define TFU_REG(NAME) V3D_TFU_ ## NAME
#else
#define TFU_REG(NAME) V3D_IFC_ ## NAME
#endif
int
v3dX(simulator_submit_tfu_ioctl)(struct v3d_hw *v3d,
struct drm_v3d_submit_tfu *args)
{
int last_vtct = V3D_READ(V3D_TFU_CS) & V3D_TFU_CS_CVTCT_SET;
int last_vtct = V3D_READ(TFU_REG(CS)) & V3D_TFU_CS_CVTCT_SET;
V3D_WRITE(V3D_TFU_IIA, args->iia);
V3D_WRITE(V3D_TFU_IIS, args->iis);
V3D_WRITE(V3D_TFU_ICA, args->ica);
V3D_WRITE(V3D_TFU_IUA, args->iua);
V3D_WRITE(V3D_TFU_IOA, args->ioa);
V3D_WRITE(V3D_TFU_IOS, args->ios);
V3D_WRITE(V3D_TFU_COEF0, args->coef[0]);
V3D_WRITE(V3D_TFU_COEF1, args->coef[1]);
V3D_WRITE(V3D_TFU_COEF2, args->coef[2]);
V3D_WRITE(V3D_TFU_COEF3, args->coef[3]);
V3D_WRITE(TFU_REG(IIA), args->iia);
V3D_WRITE(TFU_REG(IIS), args->iis);
V3D_WRITE(TFU_REG(ICA), args->ica);
V3D_WRITE(TFU_REG(IUA), args->iua);
V3D_WRITE(TFU_REG(IOA), args->ioa);
#if V3D_VERSION >= 71
V3D_WRITE(TFU_REG(IOC), args->v71.ioc);
#endif
V3D_WRITE(TFU_REG(IOS), args->ios);
V3D_WRITE(TFU_REG(COEF0), args->coef[0]);
V3D_WRITE(TFU_REG(COEF1), args->coef[1]);
V3D_WRITE(TFU_REG(COEF2), args->coef[2]);
V3D_WRITE(TFU_REG(COEF3), args->coef[3]);
V3D_WRITE(V3D_TFU_ICFG, args->icfg);
V3D_WRITE(TFU_REG(ICFG), args->icfg);
while ((V3D_READ(V3D_TFU_CS) & V3D_TFU_CS_CVTCT_SET) == last_vtct) {
while ((V3D_READ(TFU_REG(CS)) & V3D_TFU_CS_CVTCT_SET) == last_vtct) {
v3d_hw_tick(v3d);
}