[Freedreno] [PATCH 00/11] drm/msm: A5XX preemption
Jordan Crouse
jcrouse at codeaurora.org
Mon Feb 6 17:39:28 UTC 2017
This series of patches implements multiple ringbuffers and preemption for Adreno
A5XX targets. Preemption allows a command to be interrupted at specific
preemption points and execution switched to a different ringbuffer.
The software alogrithm uses preemption to enforce quality of service for
priority levels - commands to a certain ring preempt the rings of lower
priority. Note that priority is a software construct; the driver chooses a ring
to switch to and the hardware executes. This is important because it shows that
preemption can be used for things other than priority (timeslices for quality of
service for example).
This initial series implements 4 ringbuffers to give sufficient coverage for the
range of priority levels requested by the GLES and compute extensions. The
targeted ringbuffer is specified in the command submission flags. The default
ring is 0 (lowest priority).
Jordan
Jordan Crouse (11):
drm/msm: Make sure to detach the MMU during GPU cleanup
drm/msm: Improve the zap shader
drm/msm: Add hint to DRM_IOCTL_MSM_GEM_INFO to return an object IOVA
drm/msm: Remove idle function hook
drm/msm: get an iova from the address space instead of an id
drm/msm: Add a struct to pass configuration to msm_gpu_init()
drm/msm: Remove memptrs->wptr
drm/msm: Support multiple ringbuffers
drm/msm: Shadow current pointer in the ring until command is complete
drm/msm: Make the value of RB_CNTL (almost) generic
drm/msm: Implement preemption for A5XX targets
drivers/gpu/drm/msm/Makefile | 1 +
drivers/gpu/drm/msm/adreno/a3xx_gpu.c | 13 +-
drivers/gpu/drm/msm/adreno/a4xx_gpu.c | 13 +-
drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 278 +++++++++++++++++-----
drivers/gpu/drm/msm/adreno/a5xx_gpu.h | 106 +++++++++
drivers/gpu/drm/msm/adreno/a5xx_power.c | 11 +-
drivers/gpu/drm/msm/adreno/a5xx_preempt.c | 367 ++++++++++++++++++++++++++++++
drivers/gpu/drm/msm/adreno/adreno_gpu.c | 215 +++++++++++------
drivers/gpu/drm/msm/adreno/adreno_gpu.h | 42 ++--
drivers/gpu/drm/msm/dsi/dsi_host.c | 15 +-
drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c | 8 +-
drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c | 18 +-
drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h | 3 -
drivers/gpu/drm/msm/mdp/mdp4/mdp4_plane.c | 13 +-
drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c | 5 +-
drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c | 11 +-
drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h | 4 -
drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c | 13 +-
drivers/gpu/drm/msm/msm_drv.c | 43 ++--
drivers/gpu/drm/msm/msm_drv.h | 27 ++-
drivers/gpu/drm/msm/msm_fb.c | 15 +-
drivers/gpu/drm/msm/msm_fbdev.c | 10 +-
drivers/gpu/drm/msm/msm_fence.c | 85 +++++--
drivers/gpu/drm/msm/msm_fence.h | 13 +-
drivers/gpu/drm/msm/msm_gem.c | 124 +++++++---
drivers/gpu/drm/msm/msm_gem.h | 5 +-
drivers/gpu/drm/msm/msm_gem_submit.c | 14 +-
drivers/gpu/drm/msm/msm_gpu.c | 140 +++++++-----
drivers/gpu/drm/msm/msm_gpu.h | 54 ++++-
drivers/gpu/drm/msm/msm_kms.h | 3 +
drivers/gpu/drm/msm/msm_ringbuffer.c | 14 +-
drivers/gpu/drm/msm/msm_ringbuffer.h | 21 +-
include/uapi/drm/msm_drm.h | 9 +-
33 files changed, 1324 insertions(+), 389 deletions(-)
create mode 100644 drivers/gpu/drm/msm/adreno/a5xx_preempt.c
--
1.9.1
More information about the Freedreno
mailing list