mirror_ubuntu-kernels/drivers/gpu/drm
Kuogee Hsieh 858ddb64f1 drm/msm/dpu: improve DSC allocation
At DSC V1.1 DCE (Display Compression Engine) contains a DSC encoder.
However, at DSC V1.2 DCE consists of two DSC encoders, one has an odd
index and another one has an even index. Each encoder can work
independently. But only two DSC encoders from same DCE can be paired
to work together to support DSC merge mode at DSC V1.2. For DSC V1.1
two consecutive DSC encoders (start with even index) have to be paired
to support DSC merge mode.  In addition, the DSC with even index have
to be mapped to even PINGPONG index and DSC with odd index have to be
mapped to odd PINGPONG index at its data path in regardless of DSC
V1.1 or V1.2. This patch improves DSC allocation mechanism with
consideration of those factors.

Changes in V6:
-- rename _dpu_rm_reserve_dsc_single to _dpu_rm_dsc_alloc
-- rename _dpu_rm_reserve_dsc_pair to _dpu_rm_dsc_alloc_pair
-- pass global_state to _dpu_rm_pingpong_next_index()
-- remove pp_max
-- fix for loop condition check at _dpu_rm_dsc_alloc()

Changes in V5:
-- delete dsc_id[]
-- update to global_state->dsc_to_enc_id[] directly
-- replace ndx with idx
-- fix indentation at function declaration
-- only one for loop at _dpu_rm_reserve_dsc_single()

Changes in V4:
-- rework commit message
-- use reserved_by_other()
-- add _dpu_rm_pingpong_next_index()
-- revise _dpu_rm_pingpong_dsc_check()

Changes in V3:
-- add dpu_rm_pingpong_dsc_check()
-- for pair allocation use i += 2 at for loop

Changes in V2:
    -- split _dpu_rm_reserve_dsc() into _dpu_rm_reserve_dsc_single() and
       _dpu_rm_reserve_dsc_pair()

Fixes: f2803ee91a ("drm/msm/disp/dpu1: Add DSC support in RM")
Signed-off-by: Kuogee Hsieh <quic_khsieh@quicinc.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/572144/
Link: https://lore.kernel.org/r/1702580172-30606-1-git-send-email-quic_khsieh@quicinc.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
2024-02-11 22:38:06 +02:00
..
amd Merge drm/drm-next into drm-misc-next 2024-02-07 13:02:20 +01:00
arm drm/drm_property: make replace_property_blob_from_id a DRM helper 2023-12-13 15:09:53 -05:00
armada drm: Use device_get_match_data() 2023-11-27 13:56:32 -06:00
aspeed drm: Use device_get_match_data() 2023-11-27 13:56:32 -06:00
ast This cycle, I2C removes the currently unused CLASS_DDC support 2024-01-18 17:29:01 -08:00
atmel-hlcdc
bridge drm/bridge: tfp410: clear the EDID property on failures 2024-02-08 17:12:26 +02:00
ci Merge drm/drm-next into drm-misc-next 2024-01-29 14:20:23 +01:00
display Merge drm/drm-next into drm-misc-next 2024-02-07 13:02:20 +01:00
etnaviv drm/etnaviv: Convert to platform remove callback returning void 2023-11-21 09:17:54 +01:00
exynos Several fixups 2024-01-25 14:22:15 +10:00
fsl-dcu
gma500 drm: remove I2C_CLASS_DDC support 2024-01-18 21:10:41 +01:00
gud Merge drm/drm-next into drm-misc-next 2023-11-15 10:56:44 +01:00
hisilicon drm-misc-next for v6.9: 2024-02-05 13:50:15 +10:00
hyperv drm/hyperv: Remove firmware framebuffers with aperture helper 2024-01-12 12:38:37 +01:00
i2c
i915 Merge drm/drm-next into drm-misc-next 2024-02-07 13:02:20 +01:00
imagination One fix for drm/plane to avoid a use-after-free and some additional 2024-01-05 10:31:54 +10:00
imx drm/imx/dcss: have all init functions use devres 2024-02-02 15:36:21 +02:00
ingenic drm: Clean-up superfluously selecting VT_HW_CONSOLE_BINDING 2024-01-12 13:58:20 +01:00
kmb drm/kmb: Convert to platform remove callback returning void 2023-11-21 09:18:52 +01:00
lib
lima Merge drm/drm-next into drm-misc-next 2024-01-29 14:20:23 +01:00
logicvc Merge tag 'drm-misc-fixes-2023-11-08' of git://anongit.freedesktop.org/drm/drm-misc into drm-next 2023-11-10 16:57:49 +01:00
loongson Merge drm/drm-next into drm-misc-next 2024-01-29 14:20:23 +01:00
mcde drm: Clean-up superfluously selecting VT_HW_CONSOLE_BINDING 2024-01-12 13:58:20 +01:00
mediatek This cycle, I2C removes the currently unused CLASS_DDC support 2024-01-18 17:29:01 -08:00
meson drm/meson: switch to drm_bridge_edid_read() 2024-02-08 17:12:28 +02:00
mgag200 drm-misc-next for v6.9: 2024-02-05 13:50:15 +10:00
msm drm/msm/dpu: improve DSC allocation 2024-02-11 22:38:06 +02:00
mxsfb drm: Use device_get_match_data() 2023-11-27 13:56:32 -06:00
nouveau Merge drm/drm-next into drm-misc-next 2024-02-07 13:02:20 +01:00
omapdrm drm/omapdrm: Improve check for contiguous buffers 2023-12-01 12:04:28 +02:00
panel Merge drm/drm-next into drm-misc-next 2024-02-07 13:02:20 +01:00
panfrost Linux 6.7-rc5 2023-12-12 11:32:33 +10:00
pl111 drm: Clean-up superfluously selecting VT_HW_CONSOLE_BINDING 2024-01-12 13:58:20 +01:00
qxl drm/ttm: replace busy placement with flags v6 2024-01-25 09:59:44 +01:00
radeon Merge drm/drm-next into drm-misc-next 2024-01-29 14:20:23 +01:00
renesas drm/shmobile: Do not include <drm/drm_plane_helper.h> 2023-12-06 10:36:06 +01:00
rockchip drm-misc-next for v6.9: 2024-02-05 13:50:15 +10:00
scheduler drm-misc-next for v6.9: 2024-02-05 13:50:15 +10:00
solomon drm-misc-next for v6.9: 2024-02-05 13:50:15 +10:00
sprd drm/sprd: Convert to platform remove callback returning void 2023-11-21 09:18:53 +01:00
sti
stm
sun4i drm: remove I2C_CLASS_DDC support 2024-01-18 21:10:41 +01:00
tegra Merge drm/drm-next into drm-misc-next 2024-02-07 13:02:20 +01:00
tests Merge drm/drm-next into drm-misc-next 2024-02-07 13:02:20 +01:00
tidss drm/tidss: Use DRM_PLANE_COMMIT_ACTIVE_ONLY 2023-12-01 12:04:43 +02:00
tilcdc drm/tilcdc: request and mapp iomem with devres 2023-12-28 19:29:04 +02:00
tiny drm/simpledrm: Do not include <drm/drm_plane_helper.h> 2023-12-06 10:36:18 +01:00
ttm Merge drm/drm-next into drm-misc-next 2024-02-07 13:02:20 +01:00
tve200 drm: Clean-up superfluously selecting VT_HW_CONSOLE_BINDING 2024-01-12 13:58:20 +01:00
udl drm/plane-helper: Move drm_plane_helper_atomic_check() into udl 2023-12-06 10:35:49 +01:00
v3d drm-misc-next for v6.9: 2024-02-05 13:50:15 +10:00
vboxvideo drm/vboxvideo: Use the hotspot properties from cursor planes 2023-11-24 11:58:00 +01:00
vc4 drm-misc-next for v6.9: 2024-02-05 13:50:15 +10:00
vgem
virtio drm-misc-next for v6.9: 2024-02-05 13:50:15 +10:00
vkms drm/vkms: Avoid reading beyond LUT array 2024-01-02 12:06:53 -01:00
vmwgfx drm/vmwgfx: Fix the lifetime of the bo cursor memory 2024-01-30 14:18:21 -05:00
xe Merge drm/drm-next into drm-misc-next 2024-02-07 13:02:20 +01:00
xen
xlnx drm: xlnx: zynqmp_dpsub: Filter interrupts against mask 2024-02-07 15:17:23 +02:00
drm_aperture.c
drm_atomic_helper.c drm-misc-next for $kernel-version: 2023-12-19 17:07:32 +10:00
drm_atomic_state_helper.c drm/drm_plane: track color mgmt changes per plane 2023-12-13 15:09:53 -05:00
drm_atomic_uapi.c drm/drm_property: make replace_property_blob_from_id a DRM helper 2023-12-13 15:09:53 -05:00
drm_atomic.c drm/drm_plane: track color mgmt changes per plane 2023-12-13 15:09:53 -05:00
drm_auth.c drm-next for 6.8: 2024-01-12 11:32:19 -08:00
drm_blend.c Revert "drm: Introduce pixel_source DRM plane property" 2023-12-04 21:33:10 +02:00
drm_bridge_connector.c drm/bridge: switch to drm_bridge_edid_read() 2024-02-08 17:10:44 +02:00
drm_bridge.c drm/bridge: remove drm_bridge_get_edid() in favour of drm_bridge_edid_read() 2024-02-08 17:12:33 +02:00
drm_buddy.c
drm_cache.c
drm_client_modeset.c
drm_client.c drm/client: Do not acquire module reference 2023-11-15 13:51:38 +01:00
drm_color_mgmt.c
drm_connector.c drm/doc: describe PATH format for DP MST 2023-10-27 16:01:10 +02:00
drm_crtc_helper_internal.h
drm_crtc_helper.c drm/plane-helper: Move drm_plane_helper_atomic_check() into udl 2023-12-06 10:35:49 +01:00
drm_crtc_internal.h Revert "drm/atomic: Add pixel source to plane state dump" 2023-12-04 21:33:07 +02:00
drm_crtc.c drm/crtc: fix uninitialized variable use 2023-12-08 15:47:39 +01:00
drm_damage_helper.c drm: Allow drivers to indicate the damage helpers to ignore damage clips 2023-11-24 15:15:25 +01:00
drm_debugfs_crc.c
drm_debugfs.c drm/debugfs: drop unneeded DEBUG_FS guard 2024-01-02 15:50:13 +02:00
drm_displayid.c
drm_drv.c drm: Remove support for legacy drivers 2023-12-06 10:08:28 +01:00
drm_dumb_buffers.c
drm_edid_load.c drm/edid/firmware: drop drm_kms_helper.edid_firmware backward compat 2023-11-21 12:22:48 +02:00
drm_edid.c drm-misc-next for v6.9: 2024-02-05 13:50:15 +10:00
drm_eld.c drm/eld: add helpers to modify the SADs of an ELD 2023-11-09 16:48:27 +02:00
drm_encoder_slave.c
drm_encoder.c drm/encoder: register per-encoder debugfs dir 2023-12-04 16:07:29 +02:00
drm_exec.c Merge drm/drm-next into drm-misc-next 2024-01-29 14:20:23 +01:00
drm_fb_dma_helper.c
drm_fb_helper.c
drm_fbdev_dma.c
drm_fbdev_generic.c
drm_file.c drm/drm_file: fix use of uninitialized variable 2023-12-07 09:21:43 +02:00
drm_flip_work.c drm: Remove struct drm_flip_task from DRM interfaces 2023-11-14 10:23:11 +01:00
drm_format_helper.c drm/format-helper: Pass format-conversion state to helpers 2023-11-14 10:16:53 +01:00
drm_fourcc.c drm/fourcc: Add NV20 and NV30 YUV formats 2023-10-24 21:34:35 +02:00
drm_framebuffer.c drm: Warn when freeing a framebuffer that's still on a list 2023-12-23 07:31:29 +02:00
drm_gem_atomic_helper.c drm/atomic-helper: Add format-conversion state to shadow-plane state 2023-11-14 10:01:14 +01:00
drm_gem_dma_helper.c
drm_gem_framebuffer_helper.c
drm_gem_shmem_helper.c
drm_gem_ttm_helper.c
drm_gem_vram_helper.c drm/ttm: replace busy placement with flags v6 2024-01-25 09:59:44 +01:00
drm_gem.c drm: Do not overrun array in drm_gem_get_pages() 2023-10-12 10:44:06 +02:00
drm_gpuvm.c Merge tag 'drm-msm-next-2023-12-15' of https://gitlab.freedesktop.org/drm/msm into drm-next 2023-12-20 07:54:03 +10:00
drm_internal.h drm: Remove source code for non-KMS drivers 2023-12-06 10:08:37 +01:00
drm_ioc32.c drm/ioc32: replace __attribute__((packed)) with __packed 2023-12-14 12:16:58 +02:00
drm_ioctl.c drm: Remove locking for legacy ioctls and DRM_UNLOCKED 2023-12-06 10:08:32 +01:00
drm_kms_helper_common.c drm/edid/firmware: drop drm_kms_helper.edid_firmware backward compat 2023-11-21 12:22:48 +02:00
drm_lease.c drm_lease.c: copy user-array safely 2023-10-09 16:59:49 +10:00
drm_managed.c drm/managed: Add drmm_release_action 2024-01-17 10:38:39 +01:00
drm_mipi_dbi.c drm/format-helper: Pass format-conversion state to helpers 2023-11-14 10:16:53 +01:00
drm_mipi_dsi.c drm: mipi-dsi: make mipi_dsi_bus_type const 2024-02-07 12:35:10 +02:00
drm_mm.c
drm_mode_config.c
drm_mode_object.c drm: Refuse to async flip with atomic prop changes 2023-11-23 17:12:38 +01:00
drm_modes.c drm-misc-next for v6.9: 2024-02-05 13:50:15 +10:00
drm_modeset_helper.c
drm_modeset_lock.c
drm_of.c
drm_panel_orientation_quirks.c drm: panel-orientation-quirks: Add quirk for GPD Win Mini 2024-01-19 09:25:22 +01:00
drm_panel.c
drm_pci.c drm: Remove source code for non-KMS drivers 2023-12-06 10:08:37 +01:00
drm_plane_helper.c drm/plane-helper: Move drm_plane_helper_atomic_check() into udl 2023-12-06 10:35:49 +01:00
drm_plane.c drm: Don't unref the same fb many times by mistake due to deadlock handling 2023-12-23 07:31:05 +02:00
drm_prime.c Revert "drm/prime: Unexport helpers for fd/handle conversion" 2023-11-30 14:46:04 -05:00
drm_print.c
drm_privacy_screen_x86.c
drm_privacy_screen.c
drm_probe_helper.c drm/probe-helper: remove unused drm_connector_helper_get_modes_from_ddc() 2024-01-08 12:37:52 +02:00
drm_property.c drm/drm_property: make replace_property_blob_from_id a DRM helper 2023-12-13 15:09:53 -05:00
drm_rect.c
drm_self_refresh_helper.c
drm_simple_kms_helper.c
drm_suballoc.c
drm_syncobj.c drm-next for 6.8: 2024-01-12 11:32:19 -08:00
drm_sysfs.c
drm_trace_points.c
drm_trace.h
drm_vblank_work.c
drm_vblank.c drm: Remove support for legacy drivers 2023-12-06 10:08:28 +01:00
drm_vma_manager.c
drm_writeback.c
Kconfig drm-misc-next for v6.9: 2024-02-05 13:50:15 +10:00
Makefile drm/xe: Introduce a new DRM driver for Intel GPUs 2023-12-12 14:05:48 -05:00