glx: unify renderer query hooks

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30619>
This commit is contained in:
Mike Blumenkrantz 2024-08-01 11:52:05 -04:00 committed by Marge Bot
parent 479f778a2c
commit 5edfc64858
8 changed files with 17 additions and 110 deletions

View file

@ -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,
};

View file

@ -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

View file

@ -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,
};

View file

@ -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);

View file

@ -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 */

View file

@ -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 */

View file

@ -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,
};

View file

@ -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