[PATCH weston v3] drm: port the drm backend to the new init api
Giulio Camuffo
giuliocamuffo at gmail.com
Wed Dec 9 09:08:58 PST 2015
2015-12-09 18:58 GMT+02:00 Daniel Stone <daniel at fooishbar.org>:
> Hi,
>
> On 9 December 2015 at 16:29, Giulio Camuffo <giuliocamuffo at gmail.com> wrote:
>> +enum weston_drm_backend_output_mode {
>> + /** The output is disabled */
>> + WESTON_DRM_BACKEND_OUTPUT_OFF,
>> + /** The output will use the current active mode */
>> + WESTON_DRM_BACKEND_OUTPUT_CURRENT,
>> + /** The output will use the preferred mode. A modeline can be provided
>> + * by setting weston_backend_output_config::modeline in the form of
>> + * "WIDTHxHEIGHT" or in the form of an explicit modeline calculated
>> + * using e.g. the cvt tool. If a valid modeline is supplied it will be
>> + * used, if invalid or NULL the preferred available mode will be used. */
>> + WESTON_DRM_BACKEND_OUTPUT_PREFERRED,
>> +};
>> +
>> +struct weston_drm_backend_output_config {
>> + struct weston_backend_output_config base;
>> +
>> + /** The pixel format to be used by the output. Valid values are:
>> + * - NULL - The format set at backend creation time will be used;
>> + * - "xrgb8888";
>> + * - "rgb565"
>> + * - "xrgb2101010"
>> + */
>> + char *format;
>> + /** The seat to be used by the output. Set to NULL to use the
>> + * default seat. */
>> + char *seat;
>> + /** The modeline to be used by the output. Refer to the documentation
>> + * of WESTON_DRM_BACKEND_OUTPUT_PREFERRED for details. */
>> + char *modeline;
>> +};
>> +
>> +/** The backend configuration struct.
>> + *
>> + * weston_drm_backend_config contains the configuration used by a DRM
>> + * backend. The backend will take ownership of the weston_backend_config
>> + * object passed to it on initialization and will free it on destruction. */
>> +struct weston_drm_backend_config {
>> + struct weston_backend_config base;
>> +
>> + /** The connector id of the output to be initialized. A value of 0 will
>> + * enable all available outputs. */
>> + int connector;
>> + /** The tty to be used. Set to 0 to use the current tty. */
>> + int tty;
>> + /** If true the pixman renderer will be used instead of the OpenGL ES
>> + * renderer. */
>> + bool use_pixman;
>> + /** The seat to be used for input and output. If NULL the default "seat0"
>> + * will be used.
>> + * The backend will take ownership of the seat_id pointer and will free
>> + * it on backend destruction. */
>> + char *seat_id;
>> + /** The pixel format of the framebuffer to be used. Valid values are:
>> + * - NULL - The default format ("xrgb8888") will be used;
>> + * - "xrgb8888";
>> + * - "rgb565"
>> + * - "xrgb2101010"
>> + * The backend will take ownership of the format pointer and will free
>> + * it on backend destruction. */
>> + char *format;
>> +
>> + /** Callback used to configure the outputs. This function will be called
>> + * by the backend when a new DRM output needs to be configured. */
>> + enum weston_drm_backend_output_mode
>> + (*configure_output)(struct weston_compositor *compositor,
>> + struct weston_drm_backend_config *backend_config,
>> + const char *name,
>> + struct weston_drm_backend_output_config *output_config);
>> +};
>
> My main concern here is that encoding this as ABI (every single option
> for every single backend) seems a bit ambitious, and likely to lead to
> version churn. To avoid this, you could look at either some kind of
> generic key/value-store query API, or at least encoding a version
> number into the struct, so you don't have to incompatibly break ABI
> every time you add an option.
Well, but the plan is indeed to make multiple versions co-installable,
and anyway the API/ABI will change in every weston release at least in
the core so i don't think there is much point in going the extra mile
to make the ABI stable here, just yet.
>
> Other than that, looks fine enough to me, at a first pass, whilst
> being sick. So probably not quite strong enough for a Reviewed-by. ;)
>
> Cheers,
> Daniel
More information about the wayland-devel
mailing list