Mesa (main): egl/wayland: skip buffer creation on zink
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Jun 3 19:05:28 UTC 2022
Module: Mesa
Branch: main
Commit: 20ba7596949085bcf06ba48ff4f1a0784c6a6e24
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=20ba7596949085bcf06ba48ff4f1a0784c6a6e24
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Wed Jun 1 16:34:32 2022 -0400
egl/wayland: skip buffer creation on zink
this happens through wsi, so don't create resources that aren't used
cc: mesa-stable
Reviewed-by: Adam Jackson <ajax at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16814>
---
src/egl/drivers/dri2/platform_wayland.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c
index 2fa55d9820a..a40edbb4bbd 100644
--- a/src/egl/drivers/dri2/platform_wayland.c
+++ b/src/egl/drivers/dri2/platform_wayland.c
@@ -2318,6 +2318,7 @@ swrast_update_buffers(struct dri2_egl_surface *dri2_surf)
{
struct dri2_egl_display *dri2_dpy =
dri2_egl_display(dri2_surf->base.Resource.Display);
+ bool zink = dri2_surf->base.Resource.Display->Options.Zink;
/* we need to do the following operations only once per frame */
if (dri2_surf->back)
@@ -2327,7 +2328,8 @@ swrast_update_buffers(struct dri2_egl_surface *dri2_surf)
(dri2_surf->base.Width != dri2_surf->wl_win->width ||
dri2_surf->base.Height != dri2_surf->wl_win->height)) {
- dri2_wl_release_buffers(dri2_surf);
+ if (!zink)
+ dri2_wl_release_buffers(dri2_surf);
dri2_surf->base.Width = dri2_surf->wl_win->width;
dri2_surf->base.Height = dri2_surf->wl_win->height;
@@ -2355,6 +2357,8 @@ swrast_update_buffers(struct dri2_egl_surface *dri2_surf)
for (int i = 0; i < ARRAY_SIZE(dri2_surf->color_buffers); i++) {
if (!dri2_surf->color_buffers[i].locked) {
dri2_surf->back = &dri2_surf->color_buffers[i];
+ if (zink)
+ continue;
if (!dri2_wl_swrast_allocate_buffer(dri2_surf,
dri2_surf->format,
dri2_surf->base.Width,
@@ -2388,9 +2392,11 @@ swrast_update_buffers(struct dri2_egl_surface *dri2_surf)
if (!dri2_surf->color_buffers[i].locked &&
dri2_surf->color_buffers[i].wl_buffer &&
dri2_surf->color_buffers[i].age > BUFFER_TRIM_AGE_HYSTERESIS) {
- wl_buffer_destroy(dri2_surf->color_buffers[i].wl_buffer);
- munmap(dri2_surf->color_buffers[i].data,
- dri2_surf->color_buffers[i].data_size);
+ if (!zink) {
+ wl_buffer_destroy(dri2_surf->color_buffers[i].wl_buffer);
+ munmap(dri2_surf->color_buffers[i].data,
+ dri2_surf->color_buffers[i].data_size);
+ }
dri2_surf->color_buffers[i].wl_buffer = NULL;
dri2_surf->color_buffers[i].data = NULL;
dri2_surf->color_buffers[i].age = 0;
More information about the mesa-commit
mailing list