diff options
author | Rob Clark <robdclark@chromium.org> | 2023-03-08 18:53:03 +0300 |
---|---|---|
committer | Rob Clark <robdclark@chromium.org> | 2023-03-29 01:46:15 +0300 |
commit | f8b8487c0756ead2e3584550e5a4d4ce4a1e520f (patch) | |
tree | f68dbd79f61d2ed60caed90958167846d67650fd /drivers/gpu/drm/msm/msm_fence.h | |
parent | 1ad0510cf730d8556fa7ff067b72aa960dde454b (diff) | |
download | linux-f8b8487c0756ead2e3584550e5a4d4ce4a1e520f.tar.xz |
drm/msm: Add deadline based boost support
Track the nearest deadline on a fence timeline and set a timer to expire
shortly before to trigger boost if the fence has not yet been signaled.
v2: rebase
Signed-off-by: Rob Clark <robdclark@chromium.org>
Patchwork: https://patchwork.freedesktop.org/patch/525816/
Link: https://lore.kernel.org/r/20230308155322.344664-13-robdclark@gmail.com
Diffstat (limited to 'drivers/gpu/drm/msm/msm_fence.h')
-rw-r--r-- | drivers/gpu/drm/msm/msm_fence.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/drm/msm/msm_fence.h b/drivers/gpu/drm/msm/msm_fence.h index f913fa22d8fe..148196375a0b 100644 --- a/drivers/gpu/drm/msm/msm_fence.h +++ b/drivers/gpu/drm/msm/msm_fence.h @@ -52,6 +52,26 @@ struct msm_fence_context { volatile uint32_t *fenceptr; spinlock_t spinlock; + + /* + * TODO this doesn't really deal with multiple deadlines, like + * if userspace got multiple frames ahead.. OTOH atomic updates + * don't queue, so maybe that is ok + */ + + /** next_deadline: Time of next deadline */ + ktime_t next_deadline; + + /** + * next_deadline_fence: + * + * Fence value for next pending deadline. The deadline timer is + * canceled when this fence is signaled. + */ + uint32_t next_deadline_fence; + + struct hrtimer deadline_timer; + struct kthread_work deadline_work; }; struct msm_fence_context * msm_fence_context_alloc(struct drm_device *dev, |