To share common free outdated buffers and update size code. This compares width and height arguments with current egl surface dimension, if the compared surface dimension is differ, then it free local buffers and updates dimension.
In preparation to adding of new platform which uses this helper. v2: Fixes from Eric's review: a) Split out series of refactor for helpers to a separate series. b) Add the new helper function and use them to replace the old code in the same patch. Signed-off-by: Mun Gwan-gyeong <elong...@gmail.com> --- src/egl/drivers/dri2/egl_dri2.c | 12 ++++++++++++ src/egl/drivers/dri2/egl_dri2.h | 3 +++ src/egl/drivers/dri2/platform_android.c | 9 +++------ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 0db80a091f..3c4e525040 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -1056,6 +1056,18 @@ dri2_egl_surface_free_local_buffers(struct dri2_egl_surface *dri2_surf) } } +void +dri2_egl_surface_free_outdated_buffers_and_update_size(struct dri2_egl_surface *dri2_surf, + int width, int height) +{ + /* free outdated buffers and update the surface size */ + if (dri2_surf->base.Width != width || dri2_surf->base.Height != height) { + dri2_egl_surface_free_local_buffers(dri2_surf); + dri2_surf->base.Width = width; + dri2_surf->base.Height = height; + } +} + /** * Called via eglTerminate(), drv->API.Terminate(). * diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h index e3bdbb55f5..017895f0d9 100644 --- a/src/egl/drivers/dri2/egl_dri2.h +++ b/src/egl/drivers/dri2/egl_dri2.h @@ -462,6 +462,9 @@ dri2_egl_surface_alloc_local_buffer(struct dri2_egl_surface *dri2_surf, void dri2_egl_surface_free_local_buffers(struct dri2_egl_surface *dri2_surf); +void +dri2_egl_surface_free_outdated_buffers_and_update_size(struct dri2_egl_surface *dri2_surf, + int width, int height); EGLBoolean dri2_init_surface(_EGLSurface *surf, _EGLDisplay *dpy, EGLint type, _EGLConfig *conf, const EGLint *attrib_list, EGLBoolean enable_out_fence); diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c index e390365b8b..0acbb38bd8 100644 --- a/src/egl/drivers/dri2/platform_android.c +++ b/src/egl/drivers/dri2/platform_android.c @@ -414,12 +414,9 @@ update_buffers(struct dri2_egl_surface *dri2_surf) } /* free outdated buffers and update the surface size */ - if (dri2_surf->base.Width != dri2_surf->buffer->width || - dri2_surf->base.Height != dri2_surf->buffer->height) { - dri2_egl_surface_free_local_buffers(dri2_surf); - dri2_surf->base.Width = dri2_surf->buffer->width; - dri2_surf->base.Height = dri2_surf->buffer->height; - } + dri2_egl_surface_free_outdated_buffers_and_update_size(dri2_surf, + dri2_surf->buffer->width, + dri2_surf->buffer->height); return 0; } -- 2.14.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev