mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2026-03-21 14:30:35 +01:00
libweston: store format modifier name in weston_buffer
This should cut the cost of debug_scene_view_print_buffer() in half on ARM A55 CPU. Debug printing is quite expensive on such platform. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
This commit is contained in:
parent
d993f783b0
commit
9b177e381a
3 changed files with 7 additions and 12 deletions
|
|
@ -1596,6 +1596,7 @@ struct weston_buffer {
|
|||
|
||||
const struct pixel_format_info *pixel_format;
|
||||
uint64_t format_modifier;
|
||||
char *format_modifier_name;
|
||||
};
|
||||
|
||||
enum weston_buffer_reference_type {
|
||||
|
|
|
|||
|
|
@ -2823,6 +2823,7 @@ weston_buffer_destroy(struct weston_buffer *buffer)
|
|||
assert(buffer->passive_count == 0);
|
||||
|
||||
wl_signal_emit_mutable(&buffer->destroy_signal, buffer);
|
||||
free(buffer->format_modifier_name);
|
||||
free(buffer);
|
||||
}
|
||||
|
||||
|
|
@ -2937,6 +2938,8 @@ weston_buffer_from_resource(struct weston_compositor *ec,
|
|||
buffer->type = WESTON_BUFFER_RENDERER_OPAQUE;
|
||||
}
|
||||
|
||||
buffer->format_modifier_name = pixel_format_get_modifier(buffer->format_modifier);
|
||||
|
||||
if (ec->renderer->buffer_init)
|
||||
ec->renderer->buffer_init(ec, buffer);
|
||||
|
||||
|
|
@ -3103,6 +3106,7 @@ weston_buffer_create_solid_rgba(struct weston_compositor *compositor,
|
|||
pixel_format_get_info_shm(WL_SHM_FORMAT_ARGB8888);
|
||||
}
|
||||
buffer->format_modifier = DRM_FORMAT_MOD_LINEAR;
|
||||
buffer->format_modifier_name = pixel_format_get_modifier(buffer->format_modifier);
|
||||
|
||||
weston_buffer_reference(ret, buffer, BUFFER_MAY_BE_ACCESSED);
|
||||
|
||||
|
|
@ -9503,7 +9507,6 @@ static void
|
|||
debug_scene_view_print_buffer(FILE *fp, struct weston_view *view)
|
||||
{
|
||||
struct weston_buffer *buffer = view->surface->buffer_ref.buffer;
|
||||
char *modifier_name;
|
||||
|
||||
if (!buffer) {
|
||||
fputs("\t\t[buffer not available]\n", fp);
|
||||
|
|
@ -9543,12 +9546,7 @@ debug_scene_view_print_buffer(FILE *fp, struct weston_view *view)
|
|||
} else {
|
||||
fputs("\t\t\t[unknown format]\n", fp);
|
||||
}
|
||||
|
||||
modifier_name = pixel_format_get_modifier(buffer->format_modifier);
|
||||
fprintf(fp, "\t\t\tmodifier: %s\n",
|
||||
modifier_name ?
|
||||
modifier_name : "Failed to convert to a modifier name");
|
||||
free(modifier_name);
|
||||
fprintf(fp, "\t\t\tmodifier: %s\n", buffer->format_modifier_name);
|
||||
|
||||
fprintf(fp, "\t\t\twidth: %d, height: %d\n",
|
||||
buffer->width, buffer->height);
|
||||
|
|
|
|||
|
|
@ -367,7 +367,6 @@ gl_log_paint_node_start(struct gl_renderer *gr, struct weston_paint_node *pnode)
|
|||
struct weston_surface *surface;
|
||||
struct weston_buffer *buffer;
|
||||
pid_t pid = 0;
|
||||
char *modifier_name;
|
||||
|
||||
if (!weston_log_scope_is_enabled(gr->paint_node_scope))
|
||||
return;
|
||||
|
|
@ -398,11 +397,8 @@ gl_log_paint_node_start(struct gl_renderer *gr, struct weston_paint_node *pnode)
|
|||
else
|
||||
weston_log_scope_printf(gr->paint_node_scope, "\t\t[unknown buffer format]\n");
|
||||
|
||||
modifier_name = pixel_format_get_modifier(buffer->format_modifier);
|
||||
weston_log_scope_printf(gr->paint_node_scope, "\t\tbuffer modifier: %s\n",
|
||||
modifier_name ? modifier_name :
|
||||
"Failed to convert to a modifier name");
|
||||
free(modifier_name);
|
||||
buffer->format_modifier_name);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue