This series is a follow-up of what was discussed in [1] and on #wayland IRC channel regarding policy and userspace expectations on changes in colorop properties and the current status of the color pipeline in which the colorop is part of. In short, we agreed that userspace can change properties of colorops that are currently part of an active color pipeline or when the pipeline is switching status in the same commit. However, userspace cannot change colorop properties of inactive color pipeline in the expactation that it will be activated at some point in the future.
Userspace also expects persistence of color pipeline already set, even if it becomes inactive for a while, when activated, colorop settings previouly set should be preserved. In addition, I found some bugs on IGT tests when this policy is applied. So I sent bug fixes to kms_colorop and kms_properties to behave according to this contract (new version) [2]. The rest of the series in [1] was detached in [3] and already applied. However, after a bad merge conflict resolution the colorop-update track was removed from AMD and this series needs it back to make the AMD part work correctly. I've already resubmitted it [4]. I also tried to address some Sashiko's complaints on pre-existent issues that affects the stability of this series, but not all since I want to keep a healthy scope for reviews. AMD fixes are in this series because of their scope, but they can be detached and applied whenever it's convenient. [v1] https://lore.kernel.org/dri-devel/[email protected]/ Changes: - define a macro to walk in the color pipeline (Alex H.) - fix checkpatch warning (Alex H.) [v2] https://lore.kernel.org/dri-devel/[email protected]/ Changes: - [Drop] drm/atomic: duplicate state of all colorops If inactive colorops state are duplicated on resume, the commit will be rejected. - [New] Four new patches to make AMD driver match the policy of colorop updates only for colorops in active color pipelines plus individual colorop updates. It also tries to untangle COLOR_PIPELINE = Bypass from colorop BYPASS prop = true. I think patches 3-5 can be cherry-picked and applied if it looks correct for AMD, I just included them here for context (for example, Sashiko reported an issue in the previous version of this series). [v3] https://lore.kernel.org/dri-devel/[email protected]/ Changes: - make drm_atomic_add_affected_colorops static and move to drm_atomic_helper.c (John H.) - skip check when just duplicating state for suspend/resume persistence. - [re-add] drm/atomic: duplicate state of all colorops to preserve all colorop status in a suspend/resume - rewite commit message and better explain what's considered an active colorop (John H.) - [new] drm/atomic: check if an active colorop has a blob if its type requires one - drop the ternary and add just a warn_on since both current callers iterate planes already in the atomic state in AMD's active pipeline check (John H.) - explain the reason to use commited colorop in AMD's active pipeline check (John H.) - [new] drm/amd/display: don't ignore failure on blend colorop setup - [new] drm/amd/display: distinguish colorop setup error from no colorop support [1] https://lore.kernel.org/dri-devel/[email protected]/ [2] https://lore.kernel.org/igt-dev/[email protected] [3] https://lore.kernel.org/dri-devel/[email protected]/ [4] https://lore.kernel.org/dri-devel/[email protected]/ Melissa Wen (11): drm/atomic: only add states of active or transient active colorops drm/atomic: reject colorop update from inactive color pipeline drm/atomic: duplicate state of all colorops drm/atomic: check if an active colorop has a blob if its type requires one drm/amd/display: only check colorops of an active color pipeline drm/amd/display: truly bypass plane colorop 3x4 matrix and hdr mult drm/amd/display: make shaper bypass mode cleaner drm/amd/display: make blnd bypass mode clearer drm/amd/display: don't ignore failure on blend colorop setup drm/amd/display: allow individual colorop changes drm/amd/display: distinguish colorop setup error from no colorop support .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 33 ++- .../amd/display/amdgpu_dm/amdgpu_dm_color.c | 206 +++++++----------- drivers/gpu/drm/drm_atomic.c | 199 ++++++++++++----- drivers/gpu/drm/drm_atomic_helper.c | 52 ++++- include/drm/drm_atomic.h | 3 - include/drm/drm_colorop.h | 3 + 6 files changed, 304 insertions(+), 192 deletions(-) -- 2.53.0
