From 5edfc648580171a3ddcfe8ea10cbff943168fc26 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 1 Aug 2024 11:52:05 -0400 Subject: [PATCH] glx: unify renderer query hooks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Marek Olšák Part-of: --- src/glx/dri2_glx.c | 4 +- src/glx/dri2_priv.h | 8 --- src/glx/dri3_glx.c | 4 +- src/glx/dri3_priv.h | 8 --- src/glx/dri_common.h | 6 ++ src/glx/dri_common_query_renderer.c | 86 ++--------------------------- src/glx/drisw_glx.c | 4 +- src/glx/drisw_priv.h | 7 --- 8 files changed, 17 insertions(+), 110 deletions(-) diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c index 0bc265ab29e..a5ca2797291 100644 --- a/src/glx/dri2_glx.c +++ b/src/glx/dri2_glx.c @@ -666,8 +666,8 @@ dri2_get_driver_name(struct glx_screen *glx_screen) static const struct glx_screen_vtable dri2_screen_vtable = { .create_context = dri_common_create_context, .create_context_attribs = dri_create_context_attribs, - .query_renderer_integer = dri2_query_renderer_integer, - .query_renderer_string = dri2_query_renderer_string, + .query_renderer_integer = glx_dri_query_renderer_integer, + .query_renderer_string = glx_dri_query_renderer_string, .get_driver_name = dri2_get_driver_name, }; diff --git a/src/glx/dri2_priv.h b/src/glx/dri2_priv.h index d1200282928..5f62221c83a 100644 --- a/src/glx/dri2_priv.h +++ b/src/glx/dri2_priv.h @@ -52,14 +52,6 @@ struct dri2_screen { int show_fps_interval; }; -_X_HIDDEN int -dri2_query_renderer_integer(struct glx_screen *base, int attribute, - unsigned int *value); - -_X_HIDDEN int -dri2_query_renderer_string(struct glx_screen *base, int attribute, - const char **value); - #ifdef __cplusplus } #endif diff --git a/src/glx/dri3_glx.c b/src/glx/dri3_glx.c index 8b3ccbd25c8..633d83a7b3b 100644 --- a/src/glx/dri3_glx.c +++ b/src/glx/dri3_glx.c @@ -507,8 +507,8 @@ dri3_get_driver_name(struct glx_screen *glx_screen) static const struct glx_screen_vtable dri3_screen_vtable = { .create_context = dri_common_create_context, .create_context_attribs = dri_create_context_attribs, - .query_renderer_integer = dri3_query_renderer_integer, - .query_renderer_string = dri3_query_renderer_string, + .query_renderer_integer = glx_dri_query_renderer_integer, + .query_renderer_string = glx_dri_query_renderer_string, .get_driver_name = dri3_get_driver_name, }; diff --git a/src/glx/dri3_priv.h b/src/glx/dri3_priv.h index 4943906eddd..ee4f7feabc3 100644 --- a/src/glx/dri3_priv.h +++ b/src/glx/dri3_priv.h @@ -99,11 +99,3 @@ struct dri3_drawable { uint64_t previous_ust; unsigned frames; }; - -_X_HIDDEN int -dri3_query_renderer_integer(struct glx_screen *base, int attribute, - unsigned int *value); - -_X_HIDDEN int -dri3_query_renderer_string(struct glx_screen *base, int attribute, - const char **value); diff --git a/src/glx/dri_common.h b/src/glx/dri_common.h index 097c6205b0c..1c4af8384c4 100644 --- a/src/glx/dri_common.h +++ b/src/glx/dri_common.h @@ -102,6 +102,12 @@ dri_create_context_attribs(struct glx_screen *base, unsigned num_attribs, const uint32_t *attribs, unsigned *error); +_X_HIDDEN int +glx_dri_query_renderer_integer(struct glx_screen *base, int attribute, + unsigned int *value); +_X_HIDDEN int +glx_dri_query_renderer_string(struct glx_screen *base, int attribute, + const char **value); #endif /* GLX_DIRECT_RENDERING */ #endif /* _DRI_COMMON_H */ diff --git a/src/glx/dri_common_query_renderer.c b/src/glx/dri_common_query_renderer.c index 70e61c6ef1a..09a86b990ff 100644 --- a/src/glx/dri_common_query_renderer.c +++ b/src/glx/dri_common_query_renderer.c @@ -32,6 +32,7 @@ #endif #include "drisw_priv.h" #include "dri_util.h" +#include "dri_common.h" #define __RENDERER(attrib) \ { GLX_RENDERER_##attrib##_MESA, __DRI2_RENDERER_##attrib } @@ -79,12 +80,10 @@ dri_convert_context_profile_bits(int attribute, unsigned int *value) } _X_HIDDEN int -dri2_query_renderer_integer(struct glx_screen *base, int attribute, +glx_dri_query_renderer_integer(struct glx_screen *base, int attribute, unsigned int *value) { int ret; - struct dri2_screen *const psc = (struct dri2_screen *) base; - /* Even though there are invalid values (and * dri2_convert_glx_query_renderer_attribs may return -1), the higher level * GLX code is required to perform the filtering. Assume that we got a @@ -92,98 +91,23 @@ dri2_query_renderer_integer(struct glx_screen *base, int attribute, */ const int dri_attribute = dri2_convert_glx_query_renderer_attribs(attribute); - ret = dri_query_renderer_integer(psc->driScreen, dri_attribute, value); + ret = dri_query_renderer_integer(base->frontend_screen, dri_attribute, value); dri_convert_context_profile_bits(attribute, value); return ret; } _X_HIDDEN int -dri2_query_renderer_string(struct glx_screen *base, int attribute, +glx_dri_query_renderer_string(struct glx_screen *base, int attribute, const char **value) { - struct dri2_screen *const psc = (struct dri2_screen *) base; - /* Even though queryString only accepts a subset of the possible GLX * queries, the higher level GLX code is required to perform the filtering. * Assume that we got a good value. */ const int dri_attribute = dri2_convert_glx_query_renderer_attribs(attribute); - return dri_query_renderer_string(psc->driScreen, dri_attribute, value); + return dri_query_renderer_string(base->frontend_screen, dri_attribute, value); } -#if defined(HAVE_DRI3) -_X_HIDDEN int -dri3_query_renderer_integer(struct glx_screen *base, int attribute, - unsigned int *value) -{ - int ret; - struct dri3_screen *const psc = (struct dri3_screen *) base; - - /* Even though there are invalid values (and - * dri2_convert_glx_query_renderer_attribs may return -1), the higher level - * GLX code is required to perform the filtering. Assume that we got a - * good value. - */ - const int dri_attribute = dri2_convert_glx_query_renderer_attribs(attribute); - - ret = dri_query_renderer_integer(psc->driScreenRenderGPU, dri_attribute, value); - dri_convert_context_profile_bits(attribute, value); - - return ret; -} - -_X_HIDDEN int -dri3_query_renderer_string(struct glx_screen *base, int attribute, - const char **value) -{ - struct dri3_screen *const psc = (struct dri3_screen *) base; - - /* Even though queryString only accepts a subset of the possible GLX - * queries, the higher level GLX code is required to perform the filtering. - * Assume that we got a good value. - */ - const int dri_attribute = dri2_convert_glx_query_renderer_attribs(attribute); - - return dri_query_renderer_string(psc->driScreenRenderGPU, dri_attribute, value); -} -#endif /* HAVE_DRI3 */ - -_X_HIDDEN int -drisw_query_renderer_integer(struct glx_screen *base, int attribute, - unsigned int *value) -{ - int ret; - struct drisw_screen *const psc = (struct drisw_screen *) base; - - /* Even though there are invalid values (and - * dri2_convert_glx_query_renderer_attribs may return -1), the higher level - * GLX code is required to perform the filtering. Assume that we got a - * good value. - */ - const int dri_attribute = dri2_convert_glx_query_renderer_attribs(attribute); - - ret = dri_query_renderer_integer(psc->driScreen, dri_attribute, value); - dri_convert_context_profile_bits(attribute, value); - - return ret; -} - -_X_HIDDEN int -drisw_query_renderer_string(struct glx_screen *base, int attribute, - const char **value) -{ - struct drisw_screen *const psc = (struct drisw_screen *) base; - - /* Even though queryString only accepts a subset of the possible GLX - * queries, the higher level GLX code is required to perform the filtering. - * Assume that we got a good value. - */ - const int dri_attribute = dri2_convert_glx_query_renderer_attribs(attribute); - - return dri_query_renderer_string(psc->driScreen, dri_attribute, value); -} - - #endif /* GLX_DIRECT_RENDERING */ diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c index cdea16f57c7..0789858ddd1 100644 --- a/src/glx/drisw_glx.c +++ b/src/glx/drisw_glx.c @@ -599,8 +599,8 @@ drisw_get_driver_name(struct glx_screen *glx_screen) static const struct glx_screen_vtable drisw_screen_vtable = { .create_context = dri_common_create_context, .create_context_attribs = dri_create_context_attribs, - .query_renderer_integer = drisw_query_renderer_integer, - .query_renderer_string = drisw_query_renderer_string, + .query_renderer_integer = glx_dri_query_renderer_integer, + .query_renderer_string = glx_dri_query_renderer_string, .get_driver_name = drisw_get_driver_name, }; diff --git a/src/glx/drisw_priv.h b/src/glx/drisw_priv.h index 31bc48ce428..3dd3b05546e 100644 --- a/src/glx/drisw_priv.h +++ b/src/glx/drisw_priv.h @@ -57,11 +57,4 @@ struct drisw_drawable int swapInterval; }; -_X_HIDDEN int -drisw_query_renderer_integer(struct glx_screen *base, int attribute, - unsigned int *value); -_X_HIDDEN int -drisw_query_renderer_string(struct glx_screen *base, int attribute, - const char **value); - #endif