egl/wgl: Support EGL_MESA_query_driver

Acked-by: Daniel Stone <daniels@collabora.com>
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Acked-by: Sidney Just <justsid@x-plane.com>
Acked-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Tested-by: Yonggang Luo <luoyonggang@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12964>
This commit is contained in:
Jesse Natalie 2021-09-21 09:42:16 -07:00 committed by Marge Bot
parent 52e663959e
commit e08d2dde22
4 changed files with 29 additions and 4 deletions

View file

@ -34,6 +34,7 @@
#include <stw_context.h>
#include <stw_framebuffer.h>
#include <stw_image.h>
#include <stw_winsys.h>
#include <GL/wglext.h>
@ -1035,6 +1036,18 @@ wgl_destroy_image_khr(_EGLDisplay *disp, _EGLImage *img)
return EGL_TRUE;
}
static const char *
wgl_query_driver_name(_EGLDisplay *disp)
{
return stw_get_device()->stw_winsys->get_name();
}
static char *
wgl_query_driver_config(_EGLDisplay *disp)
{
return stw_get_config_xml();
}
struct _egl_driver _eglDriver = {
.Initialize = wgl_initialize,
.Terminate = wgl_terminate,
@ -1054,5 +1067,7 @@ struct _egl_driver _eglDriver = {
.WaitNative = wgl_wait_native,
.CreateImageKHR = wgl_create_image_khr,
.DestroyImageKHR = wgl_destroy_image_khr,
.QueryDriverName = wgl_query_driver_name,
.QueryDriverConfig = wgl_query_driver_config,
};

View file

@ -102,13 +102,13 @@ init_screen(const struct stw_winsys *stw_winsys, HDC hdc)
return true;
}
static const driOptionDescription gallium_driconf[] = {
#include "pipe-loader/driinfo_gallium.h"
};
static void
init_options()
{
const driOptionDescription gallium_driconf[] = {
#include "pipe-loader/driinfo_gallium.h"
};
const char *driver_name = stw_dev->stw_winsys->get_name ? stw_dev->stw_winsys->get_name() : NULL;
driParseOptionInfo(&stw_dev->option_info, gallium_driconf, ARRAY_SIZE(gallium_driconf));
driParseConfigFiles(&stw_dev->option_cache, &stw_dev->option_info, 0,
@ -117,6 +117,12 @@ init_options()
u_driconf_fill_st_options(&stw_dev->st_options, &stw_dev->option_cache);
}
char *
stw_get_config_xml(void)
{
return driGetOptionsXml(gallium_driconf, ARRAY_SIZE(gallium_driconf));
}
boolean
stw_init(const struct stw_winsys *stw_winsys)
{

View file

@ -103,6 +103,9 @@ stw_init_screen(HDC hdc);
struct stw_device *
stw_get_device(void);
char *
stw_get_config_xml(void);
static inline struct stw_context *
stw_lookup_context_locked( DHGLRC dhglrc )
{

View file

@ -43,3 +43,4 @@ stw_create_image_from_texture
stw_create_image_from_renderbuffer
stw_destroy_image
stw_translate_image
stw_get_config_xml