On Wed, Mar 15, 2017 at 11:08:56AM +0100, Maarten Lankhorst wrote: > As a proof of concept, first try to convert intel_tv, which is a rarely > used connector. It has 5 properties, tv format and 4 margins. > > I'm less certain about the state behavior itself, should we pass a size > parameter to intel_connector_alloc instead, so duplicate_state > can be done globally if it can be blindly copied? > > Can we also have a atomic_check function for connectors, so the > crtc_state->connectors_changed can be set there? It would be cleaner > and more atomic-like. > > To match the legacy behavior, format can be changed by probing just like > in legacy mode. > > Changes since v1: > - Add intel_encoder->swap_state to allow updating connector state. > - Add intel_tv->format for detect_mode and mode_valid, updated on atomic commit. > Changes since v2: > - Fix typo in tv_choose_preferred modes function name. > - Assignment of tv properties is done in core, so intel_tv only needs > a atomic_check function. Thanks Ville! > > Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_display.c | 15 +++ > drivers/gpu/drm/i915/intel_drv.h | 4 + > drivers/gpu/drm/i915/intel_tv.c | 200 ++++++++++++++++------------------- > 3 files changed, 110 insertions(+), 109 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index ac25c9bc8b81..18b7e7546ee1 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -12954,6 +12954,20 @@ static void intel_atomic_track_fbs(struct drm_atomic_state *state) > to_intel_plane(plane)->frontbuffer_bit); > } > > +static void swap_connector_state(struct drm_atomic_state *state) > +{ > + struct drm_connector *connector; > + struct drm_connector_state *new_conn_state; > + int i; > + > + for_each_new_connector_in_state(state, connector, new_conn_state, i) { > + struct intel_connector *conn = to_intel_connector(connector); > + > + if (conn->swap_state) > + conn->swap_state(conn, new_conn_state); > + } > +} So yeah I'm late, but this is pretty much exactly what DK's private state object stuff was meant for. Have you looked into rebasing on top of that? I think hand-rolling private state stuff everywhere isn't really good. Afaics DK's patch series is ready for merging into drm-misc, so shouldn't end up blocking you. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx