This way we can reuse it for drisw and dri3. Squash a couple minor whitespace fixes while we're here.
Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> --- src/glx/dri2_query_renderer.c | 34 +--------------------------------- src/glx/dri_common.c | 40 ++++++++++++++++++++++++++++++++++++---- src/glx/dri_common.h | 3 +++ 3 files changed, 40 insertions(+), 37 deletions(-) diff --git a/src/glx/dri2_query_renderer.c b/src/glx/dri2_query_renderer.c index 3baba86..5d66064 100644 --- a/src/glx/dri2_query_renderer.c +++ b/src/glx/dri2_query_renderer.c @@ -25,41 +25,9 @@ #include "xf86drm.h" #include "dri2.h" #include "dri_interface.h" +#include "dri_common.h" #include "dri2_priv.h" -#define __RENDERER(attrib) \ - { GLX_RENDERER_##attrib##_MESA, __DRI2_RENDERER_##attrib } - -static const struct { - unsigned int glx_attrib, dri2_attrib; -} query_renderer_map[] = { - __RENDERER(VENDOR_ID), - __RENDERER(DEVICE_ID), - __RENDERER(VERSION), - __RENDERER(ACCELERATED), - __RENDERER(VIDEO_MEMORY), - __RENDERER(UNIFIED_MEMORY_ARCHITECTURE), - __RENDERER(PREFERRED_PROFILE), - __RENDERER(OPENGL_CORE_PROFILE_VERSION), - __RENDERER(OPENGL_COMPATIBILITY_PROFILE_VERSION), - __RENDERER(OPENGL_ES_PROFILE_VERSION), - __RENDERER(OPENGL_ES2_PROFILE_VERSION), -}; - -#undef __RENDERER - -static int -dri2_convert_glx_query_renderer_attribs(int attribute) -{ - int i; - - for (i = 0; i < ARRAY_SIZE(query_renderer_map); i++) - if (query_renderer_map[i].glx_attrib == attribute) - return query_renderer_map[i].dri2_attrib; - - return -1; -} - _X_HIDDEN int dri2_query_renderer_integer(struct glx_screen *base, int attribute, unsigned int *value) diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c index 012c8f4..fb70107 100644 --- a/src/glx/dri_common.c +++ b/src/glx/dri_common.c @@ -204,7 +204,7 @@ static const struct { unsigned int attrib, offset; } attribMap[] = { - __ATTRIB(__DRI_ATTRIB_BUFFER_SIZE, rgbBits), + __ATTRIB(__DRI_ATTRIB_BUFFER_SIZE, rgbBits), __ATTRIB(__DRI_ATTRIB_LEVEL, level), __ATTRIB(__DRI_ATTRIB_RED_SIZE, redBits), __ATTRIB(__DRI_ATTRIB_GREEN_SIZE, greenBits), @@ -241,10 +241,9 @@ static const struct #if 0 __ATTRIB(__DRI_ATTRIB_SWAP_METHOD, swapMethod), #endif -__ATTRIB(__DRI_ATTRIB_BIND_TO_TEXTURE_RGB, bindToTextureRgb), + __ATTRIB(__DRI_ATTRIB_BIND_TO_TEXTURE_RGB, bindToTextureRgb), __ATTRIB(__DRI_ATTRIB_BIND_TO_TEXTURE_RGBA, bindToTextureRgba), - __ATTRIB(__DRI_ATTRIB_BIND_TO_MIPMAP_TEXTURE, - bindToMipmapTexture), + __ATTRIB(__DRI_ATTRIB_BIND_TO_MIPMAP_TEXTURE, bindToMipmapTexture), __ATTRIB(__DRI_ATTRIB_YINVERTED, yInverted), __ATTRIB(__DRI_ATTRIB_FRAMEBUFFER_SRGB_CAPABLE, sRGBCapable) }; @@ -593,4 +592,37 @@ dri2_convert_glx_attribs(unsigned num_attribs, const uint32_t *attribs, return true; } +#define __RENDERER(attrib) \ + { GLX_RENDERER_##attrib##_MESA, __DRI2_RENDERER_##attrib } + +static const struct { + unsigned int glx_attrib, dri2_attrib; +} query_renderer_map[] = { + __RENDERER(VENDOR_ID), + __RENDERER(DEVICE_ID), + __RENDERER(VERSION), + __RENDERER(ACCELERATED), + __RENDERER(VIDEO_MEMORY), + __RENDERER(UNIFIED_MEMORY_ARCHITECTURE), + __RENDERER(PREFERRED_PROFILE), + __RENDERER(OPENGL_CORE_PROFILE_VERSION), + __RENDERER(OPENGL_COMPATIBILITY_PROFILE_VERSION), + __RENDERER(OPENGL_ES_PROFILE_VERSION), + __RENDERER(OPENGL_ES2_PROFILE_VERSION), +}; + +#undef __RENDERER + +_X_HIDDEN int +dri2_convert_glx_query_renderer_attribs(int attribute) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(query_renderer_map); i++) + if (query_renderer_map[i].glx_attrib == attribute) + return query_renderer_map[i].dri2_attrib; + + return -1; +} + #endif /* GLX_DIRECT_RENDERING */ diff --git a/src/glx/dri_common.h b/src/glx/dri_common.h index 6234fd8..fc3b660 100644 --- a/src/glx/dri_common.h +++ b/src/glx/dri_common.h @@ -85,4 +85,7 @@ dri2_convert_glx_attribs(unsigned num_attribs, const uint32_t *attribs, uint32_t *render_type, uint32_t *flags, unsigned *api, int *reset, unsigned *error); +extern int +dri2_convert_glx_query_renderer_attribs(int attribute); + #endif /* _DRI_COMMON_H */ -- 1.9.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev