gl-renderer: Replace pbuffer-create args with struct

gl_rendererer's output_pbuffer_create has a lot of arguments now. Add a
structure for the options to make it more clear what is what.
This is in preparation for adding bare-integer arguments which are ripe
for confusion when passing positional arguments.

Signed-off-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
Daniel Stone 2020-03-06 13:04:18 +00:00 committed by Pekka Paalanen
parent db6e6e1ec5
commit 786490cb53
3 changed files with 25 additions and 21 deletions

View File

@ -196,12 +196,14 @@ headless_output_enable_gl(struct headless_output *output)
{
struct weston_compositor *compositor = output->base.compositor;
struct headless_backend *b = to_headless_backend(compositor);
const struct gl_renderer_pbuffer_options options = {
.width = output->base.current_mode->width,
.height = output->base.current_mode->height,
.drm_formats = headless_formats,
.drm_formats_count = ARRAY_LENGTH(headless_formats),
};
if (b->glri->output_pbuffer_create(&output->base,
output->base.current_mode->width,
output->base.current_mode->height,
headless_formats,
ARRAY_LENGTH(headless_formats)) < 0) {
if (b->glri->output_pbuffer_create(&output->base, &options) < 0) {
weston_log("failed to create gl renderer output state\n");
return -1;
}

View File

@ -3198,24 +3198,21 @@ gl_renderer_output_window_create(struct weston_output *output,
static int
gl_renderer_output_pbuffer_create(struct weston_output *output,
int width,
int height,
const uint32_t *drm_formats,
unsigned drm_formats_count)
const struct gl_renderer_pbuffer_options *options)
{
struct gl_renderer *gr = get_renderer(output->compositor);
EGLConfig pbuffer_config;
EGLSurface egl_surface;
int ret;
EGLint pbuffer_attribs[] = {
EGL_WIDTH, width,
EGL_HEIGHT, height,
EGL_WIDTH, options->width,
EGL_HEIGHT, options->height,
EGL_NONE
};
pbuffer_config = gl_renderer_get_egl_config(gr, EGL_PBUFFER_BIT,
drm_formats,
drm_formats_count);
options->drm_formats,
options->drm_formats_count);
if (pbuffer_config == EGL_NO_CONFIG_KHR) {
weston_log("failed to choose EGL config for PbufferSurface\n");
return -1;

View File

@ -87,6 +87,17 @@ struct gl_renderer_output_options {
unsigned drm_formats_count;
};
struct gl_renderer_pbuffer_options {
/** Width of the rendering surface in pixels */
int width;
/** Height of the rendering surface in pixels */
int height;
/** Array of DRM pixel formats acceptable for the pbuffer */
const uint32_t *drm_formats;
/** The \c drm_formats array length */
unsigned drm_formats_count;
};
struct gl_renderer_interface {
/**
* Initialize GL-renderer with the given EGL platform and native display
@ -150,10 +161,7 @@ struct gl_renderer_interface {
* Attach GL-renderer to the output with internal pixel storage
*
* \param output The output to create a rendering surface for.
* \param width Width of the rendering surface in pixels.
* \param height Height of the rendering surface in pixels.
* \param drm_formats Array of DRM pixel formats that are acceptable.
* \param drm_formats_count The drm_formats array length.
* \param options The options struct describing the pbuffer
* \return 0 on success, -1 on failure.
*
* This function creates the renderer data structures needed to repaint
@ -168,10 +176,7 @@ struct gl_renderer_interface {
* with \c EGL_PBUFFER_BIT in \c egl_surface_type.
*/
int (*output_pbuffer_create)(struct weston_output *output,
int width,
int height,
const uint32_t *drm_formats,
unsigned drm_formats_count);
const struct gl_renderer_pbuffer_options *options);
void (*output_destroy)(struct weston_output *output);