gl-renderer: Support solid-colour weston_buffers
Same as surface_set_color. Signed-off-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
@@ -2963,6 +2963,23 @@ out:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gl_renderer_surface_set_color(struct weston_surface *surface,
|
||||||
|
float red, float green, float blue, float alpha)
|
||||||
|
{
|
||||||
|
struct gl_surface_state *gs = get_surface_state(surface);
|
||||||
|
|
||||||
|
gs->color[0] = red;
|
||||||
|
gs->color[1] = green;
|
||||||
|
gs->color[2] = blue;
|
||||||
|
gs->color[3] = alpha;
|
||||||
|
gs->buffer_type = BUFFER_TYPE_SOLID;
|
||||||
|
gs->pitch = 1;
|
||||||
|
gs->height = 1;
|
||||||
|
|
||||||
|
gs->shader_variant = SHADER_VARIANT_SOLID;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gl_renderer_attach(struct weston_surface *es, struct weston_buffer *buffer)
|
gl_renderer_attach(struct weston_surface *es, struct weston_buffer *buffer)
|
||||||
{
|
{
|
||||||
@@ -3009,6 +3026,16 @@ gl_renderer_attach(struct weston_surface *es, struct weston_buffer *buffer)
|
|||||||
}
|
}
|
||||||
gl_renderer_attach_egl(es, buffer, format);
|
gl_renderer_attach_egl(es, buffer, format);
|
||||||
return;
|
return;
|
||||||
|
case WESTON_BUFFER_SOLID:
|
||||||
|
gl_renderer_surface_set_color(es,
|
||||||
|
buffer->solid.r,
|
||||||
|
buffer->solid.g,
|
||||||
|
buffer->solid.b,
|
||||||
|
buffer->solid.a);
|
||||||
|
weston_buffer_reference(&gs->buffer_ref, NULL,
|
||||||
|
BUFFER_WILL_NOT_BE_ACCESSED);
|
||||||
|
weston_buffer_release_reference(&gs->buffer_release_ref, NULL);
|
||||||
|
return;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -3028,23 +3055,6 @@ gl_renderer_attach(struct weston_surface *es, struct weston_buffer *buffer)
|
|||||||
"disconnecting due to unhandled buffer type");
|
"disconnecting due to unhandled buffer type");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
gl_renderer_surface_set_color(struct weston_surface *surface,
|
|
||||||
float red, float green, float blue, float alpha)
|
|
||||||
{
|
|
||||||
struct gl_surface_state *gs = get_surface_state(surface);
|
|
||||||
|
|
||||||
gs->color[0] = red;
|
|
||||||
gs->color[1] = green;
|
|
||||||
gs->color[2] = blue;
|
|
||||||
gs->color[3] = alpha;
|
|
||||||
gs->buffer_type = BUFFER_TYPE_SOLID;
|
|
||||||
gs->pitch = 1;
|
|
||||||
gs->height = 1;
|
|
||||||
|
|
||||||
gs->shader_variant = SHADER_VARIANT_SOLID;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gl_renderer_surface_get_content_size(struct weston_surface *surface,
|
gl_renderer_surface_get_content_size(struct weston_surface *surface,
|
||||||
int *width, int *height)
|
int *width, int *height)
|
||||||
|
|||||||
Reference in New Issue
Block a user