OpenCloudOS-Kernel/drivers/gpu/drm/panfrost
Alexey Sheplyakov 6e55d27370 drm/panfrost: initial dual core group GPUs support
On a dual core group GPUs (such as T628) fragment shading can be
performed over all cores (because a fragment shader job doesn't
need coherency between threads), however vertex shading requires
to be run on the same core group as the tiler (which always lives
in core group 0).

As a first step to support T628 power on only the first core group
(so no jobs are scheduled on the second one). This makes T628 look
like every other Midgard GPU (and throws away up to half the cores).

With this patch panfrost is able to drive T628 (r1p0) GPU on some
armv8 SoCs (in particular BE-M1000). Without the patch rendering
is horribly broken (desktop is completely unusable) and eventually
the GPU locks up (it takes from a few seconds to a couple of
minutes).

Using the second core group requires support in Mesa (and an UABI
change): the userspace should

1) set PANFROST_JD_DOESNT_NEED_COHERENCY_ON_GPU flag to opt-in
   to allowing the job to run across all cores.
2) set PANFROST_RUN_ON_SECOND_CORE_GROUP flag to allow compute
   jobs to be run on the second core group (at the moment Mesa
   does not advertise compute support on anything older than
   Mali T760)

But there's little point adding such flags until someone (myself)
steps up to do the Mesa work.

Signed-off-by: Alexey Sheplyakov <asheplyakov@basealt.ru>
Signed-off-by: Vadim V. Vlasov <vadim.vlasov@elpitech.ru>
Tested-by: Alexey Sheplyakov <asheplyakov@basealt.ru>
Co-developed-by: Steven Price <steven.price@arm.com>
Signed-off-by: Steven Price <steven.price@arm.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220115160658.582646-1-asheplyakov@basealt.ru
2022-01-17 09:43:34 +00:00
..
Kconfig
Makefile drm/panfrost: Add madvise and shrinker support 2019-08-08 15:57:36 -06:00
TODO drm/panfrost: Remove commented out call to panfrost_core_dump 2019-10-09 13:36:56 -05:00
panfrost_devfreq.c drm/panfrost: devfreq: Don't display error for EPROBE_DEFER 2021-07-23 12:06:29 +01:00
panfrost_devfreq.h drm for 5.13-rc1 2021-04-28 10:01:40 -07:00
panfrost_device.c drm/panfrost: simplify getting .driver_data 2021-09-20 14:34:37 +01:00
panfrost_device.h drm/panfrost: Queue jobs on the hardware 2021-07-01 08:53:37 +02:00
panfrost_drv.c drm/shmem-helper: Pass GEM shmem object in public interfaces 2021-11-15 11:46:13 +01:00
panfrost_features.h drm/panfrost: Merge some feature lists 2022-01-13 09:48:39 +00:00
panfrost_gem.c drm: Return error codes from struct drm_driver.gem_create_object 2021-12-02 11:12:39 +01:00
panfrost_gem.h drm/panfrost: Fix a deadlock between the shrinker and madvise path 2020-11-03 09:21:52 +01:00
panfrost_gem_shrinker.c drm/shmem-helper: Pass GEM shmem object in public interfaces 2021-11-15 11:46:13 +01:00
panfrost_gpu.c drm/panfrost: initial dual core group GPUs support 2022-01-17 09:43:34 +00:00
panfrost_gpu.h drm/panfrost: add amlogic reset quirk callback 2020-09-21 10:13:50 +01:00
panfrost_issues.h drm/panfrost: Add errata descriptions from kbase 2019-08-23 12:16:27 -05:00
panfrost_job.c drm/panfrost: use scheduler dependency tracking 2021-08-30 10:57:50 +02:00
panfrost_job.h drm/panfrost: use scheduler dependency tracking 2021-08-30 10:57:50 +02:00
panfrost_mmu.c drm/shmem-helper: Pass GEM shmem object in public interfaces 2021-11-15 11:46:13 +01:00
panfrost_mmu.h drm/panfrost: Make sure MMU context lifetime is not bound to panfrost_priv 2021-06-24 09:25:56 +02:00
panfrost_perfcnt.c drm/shmem-helper: Pass GEM shmem object in public interfaces 2021-11-15 11:46:13 +01:00
panfrost_perfcnt.h drm/panfrost: Open/close the perfcnt BO 2019-12-06 11:06:20 -06:00
panfrost_regs.h drm/panfrost: Clamp lock region to Bifrost minimum 2021-08-25 15:40:19 +01:00