Welcome to v2 of the atomic-properties series. This is the part where we start exposing atomic to userspace. This patchset applies on top of the topic/atomic-core branch. A few patches from v1 of the patchset have already been picked up on topic/atomic-core (and are not re-sent).
The first step here is to, for drivers supporting atomic, expose all the core plane/CRTC/connector state as properties. Once this is in place, all that remains is the atomic ioctl to allow userspace to atomically set a bunch of properties on a bunch of objects (last patch). All of the core properties have their set/get/check's handled by the drm_atomic core, so drivers needn't be bothered about that. NOTE: that there is one notable omission here. The 'MODE' property on the CRTC. Without this, you can do atomic pageflip but not yet atomic modeset. I am debating between three paths for handling MODE: 1) Add back blob property support to atomic ioctl 2) Add ioctls to create/destroy blob properties, and then simply pass blob property id to atomic ioctl. 3) Stick our head in the sands and expose mode as a bunch of descrete properties. Of these, at the moment I prefer #2, since it is more consistent with how userspace currently reads blob properties, and it avoids making the atomic ioctl function even more gnarly. The whole patchset can also be found at: http://cgit.freedesktop.org/~robclark/linux/log/?h=atomic-properties git://people.freedesktop.org/~robclark/linux atomic-properties Compared to v1 of this patchset: 1) few bits of comments/re-arranging 2) drop modeconfig->funcs vfunc for set_property, instead use a driver feature flag so core can figure out whether to take atomic property or legacy property path 3) add DRM_CLIENT_CAP_ATOMIC to hide atomic properties from legacy userspace 4) add drm.atomic moduleparam to (for now) hide the atomic ioctl while it is still experimental. 5) misc bits of refactoring, and addressing other review comments. Rob Clark (11): drm: add atomic_set_property wrappers drm: add atomic_get_property drm: tweak getconnector locking drm: refactor getproperties/getconnector drm: add atomic properties drm/atomic: atomic_check functions drm: small property creation cleanup drm/atomic: atomic plane properties drm/atomic: atomic connector properties drm/msm: atomic property support drm: Atomic modeset ioctl Documentation/DocBook/drm.tmpl | 91 ++- drivers/gpu/drm/drm_atomic.c | 757 ++++++++++++++++++++- drivers/gpu/drm/drm_atomic_helper.c | 16 +- drivers/gpu/drm/drm_crtc.c | 274 +++++--- drivers/gpu/drm/drm_drv.c | 4 + drivers/gpu/drm/drm_ioctl.c | 11 + drivers/gpu/drm/msm/hdmi/hdmi_connector.c | 1 + drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c | 1 + drivers/gpu/drm/msm/mdp/mdp4/mdp4_lvds_connector.c | 1 + drivers/gpu/drm/msm/mdp/mdp4/mdp4_plane.c | 1 + drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c | 1 + drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c | 2 + drivers/gpu/drm/msm/msm_drv.c | 1 + include/drm/drmP.h | 4 + include/drm/drm_atomic.h | 21 + include/drm/drm_crtc.h | 43 +- include/uapi/drm/drm.h | 8 + include/uapi/drm/drm_mode.h | 30 + 18 files changed, 1148 insertions(+), 119 deletions(-) -- 2.1.0