[Mesa-dev] [PATCH 3/7] egl/android: tweak droid_add_configs_for_visuals()
Eric Engestrom
eric at engestrom.ch
Thu Aug 25 21:36:50 UTC 2016
On Thu, Aug 25, 2016 at 05:23:42PM +0100, Emil Velikov wrote:
> From: Emil Velikov <emil.velikov at collabora.com>
>
> Iterate over the driver_configs first in order to cut down the number of
> getConfigAttrib() calls by a factor of 5.
>
> While we're here, also drop the sentinel of the visuals array. We
> already know its size so we can use that and save a few bytes.
>
> Signed-off-by: Emil Velikov <emil.velikov at collabora.com>
> ---
> src/egl/drivers/dri2/platform_android.c | 40 +++++++++++++++++----------------
> 1 file changed, 21 insertions(+), 19 deletions(-)
>
> diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c
> index a2c1adb..0d9dfe9 100644
> --- a/src/egl/drivers/dri2/platform_android.c
> +++ b/src/egl/drivers/dri2/platform_android.c
> @@ -759,7 +759,6 @@ droid_add_configs_for_visuals(_EGLDriver *drv, _EGLDisplay *dpy)
> { HAL_PIXEL_FORMAT_RGB_888, { 0xff, 0xff00, 0xff0000, 0x0 } },
> { HAL_PIXEL_FORMAT_RGB_565, { 0xf800, 0x7e0, 0x1f, 0x0 } },
> { HAL_PIXEL_FORMAT_BGRA_8888, { 0xff0000, 0xff00, 0xff, 0xff000000 } },
> - { 0, { 0, 0, 0, 0 } }
> };
> EGLint config_attrs[] = {
> EGL_NATIVE_VISUAL_ID, 0,
> @@ -768,38 +767,41 @@ droid_add_configs_for_visuals(_EGLDriver *drv, _EGLDisplay *dpy)
> EGL_RECORDABLE_ANDROID, EGL_TRUE,
> EGL_NONE
> };
> + unsigned int format_count[ARRAY_SIZE(visuals)] = {};
> int count, i, j;
>
> count = 0;
> - for (i = 0; visuals[i].format; i++) {
> - int format_count = 0;
> + for (i = 0; dri2_dpy->driver_configs[i]; i++) {
> + const EGLint surface_type = EGL_WINDOW_BIT | EGL_PBUFFER_BIT;
> + struct dri2_egl_config *dri2_conf;
> + unsigned int double_buffered = 0;
>
> - config_attrs[1] = visuals[i].format;
> - config_attrs[3] = visuals[i].format;
> + dri2_dpy->core->getConfigAttrib(dri2_dpy->driver_configs[i],
> + __DRI_ATTRIB_DOUBLE_BUFFER, &double_buffered);
>
> - for (j = 0; dri2_dpy->driver_configs[j]; j++) {
> - const EGLint surface_type = EGL_WINDOW_BIT | EGL_PBUFFER_BIT;
> - struct dri2_egl_config *dri2_conf;
> - unsigned int double_buffered = 0;
> + /* support only double buffered configs */
> + if (!double_buffered)
> + continue;
>
> - dri2_dpy->core->getConfigAttrib(dri2_dpy->driver_configs[j],
> - __DRI_ATTRIB_DOUBLE_BUFFER, &double_buffered);
> + for (j = 0; ARRAY_SIZE(visuals); j++) {
Again...
> + int format_count = 0;
>
> - /* support only double buffered configs */
> - if (!double_buffered)
> - continue;
> + config_attrs[1] = visuals[j].format;
> + config_attrs[3] = visuals[j].format;
>
> - dri2_conf = dri2_add_config(dpy, dri2_dpy->driver_configs[j],
> - count + 1, surface_type, config_attrs, visuals[i].rgba_masks);
> + dri2_conf = dri2_add_config(dpy, dri2_dpy->driver_configs[i],
> + count + 1, surface_type, config_attrs, visuals[j].rgba_masks);
> if (dri2_conf) {
> count++;
> - format_count++;
> + format_count[j]++;
> }
> }
> + }
>
> - if (!format_count) {
> + for (i = 0; ARRAY_SIZE(format_count); i++) {
...and again...
and you do the same in the other patches :)
> + if (!format_count[i]) {
> _eglLog(_EGL_DEBUG, "No DRI config supports native format 0x%x",
> - visuals[i].format);
> + visuals[i].format);
> }
> }
>
> --
> 2.9.0
More information about the mesa-dev
mailing list