Midgard contains two job slots capable of compute jobs, JS1 and JS2. As an optimization, it is preferable to schedule compute-only workloads to JS2, although compute jobs are functionally able to be scheduled to JS1 (barring an obscure errata). Accordingly, we reserve a compute-only hint in the UABI to allow future compute-equipped userspace and future compute-optimized kernelspace to hint towards JS2. At the moment, the hint is ignored, but this is harmless. I have verified compute jobs can be successfully submitted and executed with an appropriate userspace against a 5.1 kernel without this hint. Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@xxxxxxxxxxxxx> --- drivers/gpu/drm/panfrost/TODO | 3 --- drivers/gpu/drm/panfrost/panfrost_job.c | 4 +++- include/uapi/drm/panfrost_drm.h | 8 ++++++++ 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/panfrost/TODO b/drivers/gpu/drm/panfrost/TODO index c2e44add3..8c367a5a6 100644 --- a/drivers/gpu/drm/panfrost/TODO +++ b/drivers/gpu/drm/panfrost/TODO @@ -20,8 +20,5 @@ - Support for madvise and a shrinker. -- Compute job support. So called 'compute only' jobs need to be plumbed up to - userspace. - - Performance counter support. (Boris) diff --git a/drivers/gpu/drm/panfrost/panfrost_job.c b/drivers/gpu/drm/panfrost/panfrost_job.c index 9bb9260d9..3e1385a3b 100644 --- a/drivers/gpu/drm/panfrost/panfrost_job.c +++ b/drivers/gpu/drm/panfrost/panfrost_job.c @@ -108,7 +108,9 @@ static int panfrost_job_get_slot(struct panfrost_job *job) if (job->requirements & PANFROST_JD_REQ_FS) return 0; -/* Not exposed to userspace yet */ + /* Compute jobs can run on JS1, so compute-only jobs can run with this + * simple implementations (useful for backwards compatibility). As an + * optimization, we will eventually want to schedule to JS2. */ #if 0 if (job->requirements & PANFROST_JD_REQ_ONLY_COMPUTE) { if ((job->requirements & PANFROST_JD_REQ_CORE_GRP_MASK) && diff --git a/include/uapi/drm/panfrost_drm.h b/include/uapi/drm/panfrost_drm.h index b5d370638..25acde34b 100644 --- a/include/uapi/drm/panfrost_drm.h +++ b/include/uapi/drm/panfrost_drm.h @@ -38,6 +38,14 @@ extern "C" { #define DRM_IOCTL_PANFROST_PERFCNT_DUMP DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_PERFCNT_DUMP, struct drm_panfrost_perfcnt_dump) #define PANFROST_JD_REQ_FS (1 << 0) + +/* Optional (mandatory for T600 r0p0 15dev0 due to errata #8987) hint to the + * kernel that the commands only contain JOB_TYPE_COMPUTE jobs, without + * vertex/tiler/fragment jobs. If present, the kernel may use this as an + * optimization, but it is not strictly necessary. */ + +#define PANFROST_JD_REQ_ONLY_COMPUTE (1 << 1) + /** * struct drm_panfrost_submit - ioctl argument for submitting commands to the 3D * engine. -- 2.20.1 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel