From b3f9b347f975414770b98964a06dedc4012955c8 Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Sun, 1 Aug 2021 09:02:12 -0700 Subject: [PATCH] wgl: Add a driver name for driconf Reviewed-by: Emil Velikov Reviewed-by: Charmaine Lee Reviewed-by: Neha Bhende Part-of: --- src/gallium/frontends/wgl/stw_device.c | 3 ++- src/gallium/frontends/wgl/stw_winsys.h | 6 ++++++ src/gallium/targets/libgl-d3d12/libgl_d3d12.c | 8 +++++++- src/gallium/targets/libgl-gdi/libgl_gdi.c | 13 ++++++++++++- 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/gallium/frontends/wgl/stw_device.c b/src/gallium/frontends/wgl/stw_device.c index 4539a45..f8b1ffd 100644 --- a/src/gallium/frontends/wgl/stw_device.c +++ b/src/gallium/frontends/wgl/stw_device.c @@ -107,9 +107,10 @@ init_options() #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, - "", NULL, NULL, NULL, 0, NULL, 0); + driver_name ? driver_name : "", NULL, NULL, NULL, 0, NULL, 0); u_driconf_fill_st_options(&stw_dev->st_options, &stw_dev->option_cache); } diff --git a/src/gallium/frontends/wgl/stw_winsys.h b/src/gallium/frontends/wgl/stw_winsys.h index 47b8b20..850560f 100644 --- a/src/gallium/frontends/wgl/stw_winsys.h +++ b/src/gallium/frontends/wgl/stw_winsys.h @@ -133,6 +133,12 @@ struct stw_winsys (*create_framebuffer)( struct pipe_screen *screen, HDC hDC, int iPixelFormat ); + + /** + * Get the name of the screen that was created + */ + const char * + (*get_name)(void); }; boolean diff --git a/src/gallium/targets/libgl-d3d12/libgl_d3d12.c b/src/gallium/targets/libgl-d3d12/libgl_d3d12.c index 981f1fc..e83dbb3 100644 --- a/src/gallium/targets/libgl-d3d12/libgl_d3d12.c +++ b/src/gallium/targets/libgl-d3d12/libgl_d3d12.c @@ -100,6 +100,11 @@ gdi_create_framebuffer(struct pipe_screen *screen, return d3d12_wgl_create_framebuffer(screen, hDC, iPixelFormat); } +static const char * +get_name(void) +{ + return "d3d12"; +} static const struct stw_winsys stw_winsys = { &gdi_screen_create, @@ -109,7 +114,8 @@ static const struct stw_winsys stw_winsys = { NULL, /* shared_surface_close */ NULL, /* compose */ &gdi_get_pfd_flags, - &gdi_create_framebuffer + &gdi_create_framebuffer, + &get_name, }; diff --git a/src/gallium/targets/libgl-gdi/libgl_gdi.c b/src/gallium/targets/libgl-gdi/libgl_gdi.c index 12ec8ff..f7898ee 100644 --- a/src/gallium/targets/libgl-gdi/libgl_gdi.c +++ b/src/gallium/targets/libgl-gdi/libgl_gdi.c @@ -80,6 +80,8 @@ static boolean use_d3d12 = FALSE; static boolean use_zink = FALSE; #endif +static const char *created_driver_name = NULL; + static struct pipe_screen * gdi_screen_create_by_name(HDC hDC, const char* driver, struct sw_winsys *winsys) { @@ -153,8 +155,10 @@ gdi_screen_create(HDC hDC) */ for (unsigned i = 0; i < ARRAY_SIZE(drivers); ++i) { struct pipe_screen* screen = gdi_screen_create_by_name(hDC, drivers[i], winsys); - if (screen) + if (screen) { + created_driver_name = drivers[i]; return screen; + } if (i == 0 && drivers[i][0] != '\0') break; } @@ -259,6 +263,12 @@ gdi_create_framebuffer(struct pipe_screen *screen, return NULL; } +static const char * +gdi_get_name(void) +{ + return created_driver_name; +} + static const struct stw_winsys stw_winsys = { &gdi_screen_create, @@ -273,6 +283,7 @@ static const struct stw_winsys stw_winsys = { NULL, /* compose */ &gdi_get_pfd_flags, &gdi_create_framebuffer, + &gdi_get_name, }; -- 2.7.4