From 54b71e9e77270cfb13286f413e08813d73b554db Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Mon, 18 May 2026 18:28:28 +0200 Subject: [PATCH] util: pass a struct to driParseConfigFiles() It would be easier to add more functionalities like shader hashes etc. Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_instance.c | 11 +++++++--- src/asahi/vulkan/hk_instance.c | 12 ++++++---- src/broadcom/vulkan/v3dv_device.c | 11 +++++++--- src/freedreno/vulkan/tu_device.cc | 13 ++++++++--- .../auxiliary/pipe-loader/pipe_loader.c | 6 +++-- src/gallium/drivers/asahi/agx_pipe.c | 4 ++-- src/gallium/drivers/crocus/crocus_screen.c | 4 ++-- .../drivers/freedreno/freedreno_screen.c | 7 ++++-- src/gallium/drivers/iris/iris_screen.c | 4 ++-- src/gallium/drivers/lima/lima_screen.c | 4 ++-- src/gallium/drivers/panfrost/pan_screen.c | 4 ++-- src/gallium/drivers/r300/r300_screen.c | 4 ++-- src/gallium/drivers/radeonsi/si_pipe.c | 4 ++-- src/gallium/drivers/v3d/v3d_screen.c | 4 ++-- src/gallium/drivers/virgl/virgl_screen.c | 4 ++-- src/gallium/drivers/zink/zink_screen.c | 4 ++-- src/gallium/frontends/dri/dri_util.c | 7 ++++-- src/gallium/frontends/wgl/stw_device.c | 6 +++-- src/imagination/vulkan/pvr_instance.c | 18 +++++++-------- src/intel/vulkan/anv_instance.c | 14 +++++++----- src/intel/vulkan_hasvk/anv_device.c | 14 +++++++----- src/loader/loader.c | 13 +++++++---- src/microsoft/vulkan/dzn_device.c | 11 +++++++--- src/nouveau/vulkan/nvk_instance.c | 11 +++++++--- src/panfrost/vulkan/panvk_instance.c | 11 +++++++--- src/util/tests/xmlconfig.cpp | 19 +++++++++------- src/util/xmlconfig.c | 22 ++++++++----------- src/util/xmlconfig.h | 21 ++++++++++++------ src/virtio/vulkan/vn_instance.c | 14 +++++++----- 29 files changed, 171 insertions(+), 110 deletions(-) diff --git a/src/amd/vulkan/radv_instance.c b/src/amd/vulkan/radv_instance.c index e1a68a347ba..1bfc7baabcf 100644 --- a/src/amd/vulkan/radv_instance.c +++ b/src/amd/vulkan/radv_instance.c @@ -329,9 +329,14 @@ radv_init_dri_options(struct radv_instance *instance) struct radv_drirc *drirc = &instance->drirc; driParseOptionInfo(&drirc->available_options, radv_dri_options, ARRAY_SIZE(radv_dri_options)); - driParseConfigFiles(&drirc->options, &drirc->available_options, 0, "radv", NULL, NULL, - instance->vk.app_info.app_name, instance->vk.app_info.app_version, - instance->vk.app_info.engine_name, instance->vk.app_info.engine_version); + driParseConfigFiles(&drirc->options, &drirc->available_options, + &(driConfigFileParseParams){ + .driverName = "radv", + .applicationName = instance->vk.app_info.app_name, + .applicationVersion = instance->vk.app_info.app_version, + .engineName = instance->vk.app_info.engine_name, + .engineVersion = instance->vk.app_info.engine_version, + }); radv_init_dri_debug_options(instance); radv_init_dri_performance_options(instance); diff --git a/src/asahi/vulkan/hk_instance.c b/src/asahi/vulkan/hk_instance.c index e0db7a46633..b452786f586 100644 --- a/src/asahi/vulkan/hk_instance.c +++ b/src/asahi/vulkan/hk_instance.c @@ -107,10 +107,14 @@ hk_init_dri_options(struct hk_instance *instance) { driParseOptionInfo(&instance->available_dri_options, hk_dri_options, ARRAY_SIZE(hk_dri_options)); - driParseConfigFiles( - &instance->dri_options, &instance->available_dri_options, 0, "hk", NULL, - NULL, instance->vk.app_info.app_name, instance->vk.app_info.app_version, - instance->vk.app_info.engine_name, instance->vk.app_info.engine_version); + driParseConfigFiles(&instance->dri_options, &instance->available_dri_options, + &(driConfigFileParseParams) { + .driverName = "hk", + .applicationName = instance->vk.app_info.app_name, + .applicationVersion = instance->vk.app_info.app_version, + .engineName = instance->vk.app_info.engine_name, + .engineVersion = instance->vk.app_info.engine_version, + }); instance->force_vk_vendor = driQueryOptioni(&instance->dri_options, "force_vk_vendor"); diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c index f5efc0290e6..ba9986bd896 100644 --- a/src/broadcom/vulkan/v3dv_device.c +++ b/src/broadcom/vulkan/v3dv_device.c @@ -598,9 +598,14 @@ v3dv_init_dri_options(struct v3dv_instance *instance) { driParseOptionInfo(&instance->available_dri_options, v3dv_dri_options, ARRAY_SIZE(v3dv_dri_options)); - driParseConfigFiles(&instance->dri_options, &instance->available_dri_options, 0, "v3dv", NULL, NULL, - instance->vk.app_info.app_name, instance->vk.app_info.app_version, - instance->vk.app_info.engine_name, instance->vk.app_info.engine_version); + driParseConfigFiles(&instance->dri_options, &instance->available_dri_options, + &(driConfigFileParseParams) { + .driverName = "v3dv", + .applicationName = instance->vk.app_info.app_name, + .applicationVersion = instance->vk.app_info.app_version, + .engineName = instance->vk.app_info.engine_name, + .engineVersion = instance->vk.app_info.engine_version, + }); } VKAPI_ATTR VkResult VKAPI_CALL diff --git a/src/freedreno/vulkan/tu_device.cc b/src/freedreno/vulkan/tu_device.cc index fa4a27c5e3c..232cc97c304 100644 --- a/src/freedreno/vulkan/tu_device.cc +++ b/src/freedreno/vulkan/tu_device.cc @@ -1869,11 +1869,18 @@ static const driOptionDescription tu_dri_options[] = { static void tu_init_dri_options(struct tu_instance *instance) { + driConfigFileParseParams params = { + .driverName = "turnip", + .applicationName = instance->vk.app_info.app_name, + .applicationVersion = instance->vk.app_info.app_version, + .engineName = instance->vk.app_info.engine_name, + .engineVersion = instance->vk.app_info.engine_version, + }; + driParseOptionInfo(&instance->available_dri_options, tu_dri_options, ARRAY_SIZE(tu_dri_options)); - driParseConfigFiles(&instance->dri_options, &instance->available_dri_options, 0, "turnip", NULL, NULL, - instance->vk.app_info.app_name, instance->vk.app_info.app_version, - instance->vk.app_info.engine_name, instance->vk.app_info.engine_version); + driParseConfigFiles(&instance->dri_options, &instance->available_dri_options, + ¶ms); instance->force_vk_vendor = driQueryOptioni(&instance->dri_options, "force_vk_vendor"); diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader.c b/src/gallium/auxiliary/pipe-loader/pipe_loader.c index 1f54a3b8b84..d0664cc303d 100644 --- a/src/gallium/auxiliary/pipe-loader/pipe_loader.c +++ b/src/gallium/auxiliary/pipe-loader/pipe_loader.c @@ -137,8 +137,10 @@ void pipe_loader_config_options(struct pipe_loader_device *dev) { if (!dev->option_cache.info) { - driParseConfigFiles(&dev->option_cache, &dev->option_info, 0, - dev->driver_name, NULL, NULL, NULL, 0, NULL, 0); + driParseConfigFiles(&dev->option_cache, &dev->option_info, + &(driConfigFileParseParams) { + .driverName = dev->driver_name, + }); } } diff --git a/src/gallium/drivers/asahi/agx_pipe.c b/src/gallium/drivers/asahi/agx_pipe.c index f232a974b4f..f9e006a8596 100644 --- a/src/gallium/drivers/asahi/agx_pipe.c +++ b/src/gallium/drivers/asahi/agx_pipe.c @@ -2429,8 +2429,8 @@ agx_screen_create(int fd, struct renderonly *ro, screen = &agx_screen->pscreen; /* parse driconf configuration now for device specific overrides */ - driParseConfigFiles(config->options, config->options_info, 0, "asahi", NULL, - NULL, NULL, 0, NULL, 0); + driParseConfigFiles(config->options, config->options_info, + &(driConfigFileParseParams) { .driverName = "asahi" }); agx_screen->dev.fd = fd; agx_screen->dev.ro = ro; diff --git a/src/gallium/drivers/crocus/crocus_screen.c b/src/gallium/drivers/crocus/crocus_screen.c index 882fc969c8a..4f3c8beef42 100644 --- a/src/gallium/drivers/crocus/crocus_screen.c +++ b/src/gallium/drivers/crocus/crocus_screen.c @@ -572,8 +572,8 @@ crocus_screen_create(int fd, const struct pipe_screen_config *config) screen->aperture_bytes = get_aperture_size(fd); screen->aperture_threshold = screen->aperture_bytes * 3 / 4; - driParseConfigFiles(config->options, config->options_info, 0, "crocus", - NULL, NULL, NULL, 0, NULL, 0); + driParseConfigFiles(config->options, config->options_info, + &(driConfigFileParseParams) { .driverName = "crocus" }); bool bo_reuse = false; int bo_reuse_mode = driQueryOptioni(config->options, "bo_reuse"); diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c index e92e4042cd2..ccff1b16f40 100644 --- a/src/gallium/drivers/freedreno/freedreno_screen.c +++ b/src/gallium/drivers/freedreno/freedreno_screen.c @@ -1024,8 +1024,11 @@ fd_screen_create(int fd, screen->has_syncobj = fd_has_syncobj(screen->dev); /* parse driconf configuration now for device specific overrides: */ - driParseConfigFiles(config->options, config->options_info, 0, "msm", - NULL, fd_dev_name(screen->dev_id), NULL, 0, NULL, 0); + driParseConfigFiles(config->options, config->options_info, + &(driConfigFileParseParams) { + .driverName = "msm", + .deviceName = fd_dev_name(screen->dev_id), + }); screen->driconf.conservative_lrz = !driQueryOptionb(config->options, "disable_conservative_lrz"); diff --git a/src/gallium/drivers/iris/iris_screen.c b/src/gallium/drivers/iris/iris_screen.c index e96672bdada..8d0628d248e 100644 --- a/src/gallium/drivers/iris/iris_screen.c +++ b/src/gallium/drivers/iris/iris_screen.c @@ -665,8 +665,8 @@ iris_screen_create(int fd, const struct pipe_screen_config *config) if (!screen) return NULL; - driParseConfigFiles(config->options, config->options_info, 0, "iris", - NULL, NULL, NULL, 0, NULL, 0); + driParseConfigFiles(config->options, config->options_info, + &(driConfigFileParseParams) { .driverName = "iris" }); bool bo_reuse = false; int bo_reuse_mode = driQueryOptioni(config->options, "bo_reuse"); diff --git a/src/gallium/drivers/lima/lima_screen.c b/src/gallium/drivers/lima/lima_screen.c index 18ce19befde..fdbcb87c996 100644 --- a/src/gallium/drivers/lima/lima_screen.c +++ b/src/gallium/drivers/lima/lima_screen.c @@ -581,8 +581,8 @@ lima_screen_create(int fd, const struct pipe_screen_config *config, lima_plb_pp_stream_cache_size = MAX2(128 * 1024 * lima_ctx_num_plb, lima_plb_pp_stream_cache_size); - driParseConfigFiles(config->options, config->options_info, 0, - "lima", NULL, NULL, NULL, 0, NULL, 0); + driParseConfigFiles(config->options, config->options_info, + &(driConfigFileParseParams) { .driverName = "lima" }); if (!lima_screen_query_info(screen)) goto err_out0; diff --git a/src/gallium/drivers/panfrost/pan_screen.c b/src/gallium/drivers/panfrost/pan_screen.c index 24cad028090..3e26102c97b 100644 --- a/src/gallium/drivers/panfrost/pan_screen.c +++ b/src/gallium/drivers/panfrost/pan_screen.c @@ -1025,8 +1025,8 @@ panfrost_create_screen(int fd, const struct pipe_screen_config *config, struct panfrost_device *dev = pan_device(&screen->base); - driParseConfigFiles(config->options, config->options_info, 0, - "panfrost", NULL, NULL, NULL, 0, NULL, 0); + driParseConfigFiles(config->options, config->options_info, + &(driConfigFileParseParams) { .driverName = "panfrost" }); /* Debug must be set first for pandecode to work correctly */ dev->debug = diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c index bc0ad5c7848..1ae08ebe081 100644 --- a/src/gallium/drivers/r300/r300_screen.c +++ b/src/gallium/drivers/r300/r300_screen.c @@ -657,8 +657,8 @@ struct pipe_screen* r300_screen_create(struct radeon_winsys *rws, r300_init_debug(r300screen); r300_parse_chipset(r300screen->info.pci_id, &r300screen->caps); - driParseConfigFiles(config->options, config->options_info, 0, "r300", NULL, - NULL, NULL, 0, NULL, 0); + driParseConfigFiles(config->options, config->options_info, + &(driConfigFileParseParams) { .driverName = "r300" }); #define OPT_BOOL(name, dflt, description) \ r300screen->options.name = driQueryOptionb(config->options, "r300_" #name); diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c index 56c7254ad93..f8acbd8a68f 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.c +++ b/src/gallium/drivers/radeonsi/si_pipe.c @@ -276,8 +276,8 @@ struct pipe_screen *radeonsi_screen_create(int fd, const struct pipe_screen_conf ac_init_llvm_once(); #endif - driParseConfigFiles(config->options, config->options_info, 0, "radeonsi", - NULL, NULL, NULL, 0, NULL, 0); + driParseConfigFiles(config->options, config->options_info, + &(driConfigFileParseParams) { .driverName = "radeonsi" }); #ifdef HAVE_AMDGPU_VIRTIO if (strcmp(version->name, "virtio_gpu") == 0) { diff --git a/src/gallium/drivers/v3d/v3d_screen.c b/src/gallium/drivers/v3d/v3d_screen.c index 9c01d31c01b..94c2db33d3f 100644 --- a/src/gallium/drivers/v3d/v3d_screen.c +++ b/src/gallium/drivers/v3d/v3d_screen.c @@ -803,8 +803,8 @@ v3d_screen_create(int fd, const struct pipe_screen_config *config, if (!screen->perfcnt) goto fail; - driParseConfigFiles(config->options, config->options_info, 0, "v3d", - NULL, NULL, NULL, 0, NULL, 0); + driParseConfigFiles(config->options, config->options_info, + &(driConfigFileParseParams) { .driverName = "v3d" }); /* We have to driCheckOption for the simulator mode to not assertion * fail on not having our XML config. diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c index 6634111f18f..66b3d3d6368 100644 --- a/src/gallium/drivers/virgl/virgl_screen.c +++ b/src/gallium/drivers/virgl/virgl_screen.c @@ -990,8 +990,8 @@ virgl_create_screen(struct virgl_winsys *vws, const struct pipe_screen_config *c virgl_debug = debug_get_option_virgl_debug(); if (config && config->options) { - driParseConfigFiles(config->options, config->options_info, 0, "virtio_gpu", - NULL, NULL, NULL, 0, NULL, 0); + driParseConfigFiles(config->options, config->options_info, + &(driConfigFileParseParams) { .driverName = "virtio_gpu" }); screen->tweak_gles_emulate_bgra = driQueryOptionb(config->options, VIRGL_GLES_EMULATE_BGRA); diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 42efca3705b..71803f9e774 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -3412,8 +3412,8 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev } if (config) { - driParseConfigFiles(config->options, config->options_info, 0, "zink", - NULL, NULL, NULL, 0, NULL, 0); + driParseConfigFiles(config->options, config->options_info, + &(driConfigFileParseParams) { .driverName = "zink" }); screen->driconf.dual_color_blend_by_location = driQueryOptionb(config->options, "dual_color_blend_by_location"); //screen->driconf.inline_uniforms = driQueryOptionb(config->options, "radeonsi_inline_uniforms"); screen->driconf.emulate_point_smooth = driQueryOptionb(config->options, "zink_emulate_point_smooth"); diff --git a/src/gallium/frontends/dri/dri_util.c b/src/gallium/frontends/dri/dri_util.c index 3b5c22af40d..584ab9a717a 100644 --- a/src/gallium/frontends/dri/dri_util.c +++ b/src/gallium/frontends/dri/dri_util.c @@ -119,8 +119,11 @@ driCreateNewScreen3(int scrn, int fd, /* Option parsing before ->InitScreen(), as some options apply there. */ driParseOptionInfo(&screen->optionInfo, __dri2ConfigOptions, ARRAY_SIZE(__dri2ConfigOptions)); - driParseConfigFiles(&screen->optionCache, &screen->optionInfo, screen->myNum, - "dri2", NULL, NULL, NULL, 0, NULL, 0); + driParseConfigFiles(&screen->optionCache, &screen->optionInfo, + &(driConfigFileParseParams) { + .screenNum = screen->myNum, + .driverName = "dri2", + }); (void) mtx_init(&screen->opencl_func_mutex, mtx_plain); diff --git a/src/gallium/frontends/wgl/stw_device.c b/src/gallium/frontends/wgl/stw_device.c index 24fd03d4472..6846f33d7f1 100644 --- a/src/gallium/frontends/wgl/stw_device.c +++ b/src/gallium/frontends/wgl/stw_device.c @@ -122,8 +122,10 @@ init_options() { 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, - driver_name ? driver_name : "", NULL, NULL, NULL, 0, NULL, 0); + driParseConfigFiles(&stw_dev->option_cache, &stw_dev->option_info, + &(driConfigFileParseParams) { + .driverName = driver_name ? driver_name : "", + }); u_driconf_fill_st_options(&stw_dev->st_options, &stw_dev->option_cache); diff --git a/src/imagination/vulkan/pvr_instance.c b/src/imagination/vulkan/pvr_instance.c index 52da6d884f5..5e93c807ce9 100644 --- a/src/imagination/vulkan/pvr_instance.c +++ b/src/imagination/vulkan/pvr_instance.c @@ -346,16 +346,14 @@ static void pvr_init_dri_options(struct pvr_instance *instance) driParseOptionInfo(&instance->available_dri_options, pvr_dri_options, ARRAY_SIZE(pvr_dri_options)); - driParseConfigFiles(&instance->dri_options, - &instance->available_dri_options, - 0, - "pvr", - NULL, - NULL, - instance->vk.app_info.app_name, - instance->vk.app_info.app_version, - instance->vk.app_info.engine_name, - instance->vk.app_info.engine_version); + driParseConfigFiles(&instance->dri_options, &instance->available_dri_options, + &(driConfigFileParseParams) { + .driverName = "pvr", + .applicationName = instance->vk.app_info.app_name, + .applicationVersion = instance->vk.app_info.app_version, + .engineName = instance->vk.app_info.engine_name, + .engineVersion = instance->vk.app_info.engine_version, + }); instance->force_vk_vendor = driQueryOptioni(&instance->dri_options, "force_vk_vendor"); diff --git a/src/intel/vulkan/anv_instance.c b/src/intel/vulkan/anv_instance.c index 2ed5c127545..431e724643f 100644 --- a/src/intel/vulkan/anv_instance.c +++ b/src/intel/vulkan/anv_instance.c @@ -209,12 +209,14 @@ anv_init_dri_options(struct anv_instance *instance) { driParseOptionInfo(&instance->available_dri_options, anv_dri_options, ARRAY_SIZE(anv_dri_options)); - driParseConfigFiles(&instance->dri_options, - &instance->available_dri_options, 0, "anv", NULL, NULL, - instance->vk.app_info.app_name, - instance->vk.app_info.app_version, - instance->vk.app_info.engine_name, - instance->vk.app_info.engine_version); + driParseConfigFiles(&instance->dri_options, &instance->available_dri_options, + &(driConfigFileParseParams) { + .driverName = "anv", + .applicationName = instance->vk.app_info.app_name, + .applicationVersion = instance->vk.app_info.app_version, + .engineName = instance->vk.app_info.engine_name, + .engineVersion = instance->vk.app_info.engine_version, + }); instance->assume_full_subgroups = driQueryOptioni(&instance->dri_options, "anv_assume_full_subgroups"); diff --git a/src/intel/vulkan_hasvk/anv_device.c b/src/intel/vulkan_hasvk/anv_device.c index ccb157ac370..fb75d0cf83f 100644 --- a/src/intel/vulkan_hasvk/anv_device.c +++ b/src/intel/vulkan_hasvk/anv_device.c @@ -1930,12 +1930,14 @@ anv_init_dri_options(struct anv_instance *instance) { driParseOptionInfo(&instance->available_dri_options, anv_dri_options, ARRAY_SIZE(anv_dri_options)); - driParseConfigFiles(&instance->dri_options, - &instance->available_dri_options, 0, "anv", NULL, NULL, - instance->vk.app_info.app_name, - instance->vk.app_info.app_version, - instance->vk.app_info.engine_name, - instance->vk.app_info.engine_version); + driParseConfigFiles(&instance->dri_options, &instance->available_dri_options, + &(driConfigFileParseParams) { + .driverName = "anv", + .applicationName = instance->vk.app_info.app_name, + .applicationVersion = instance->vk.app_info.app_version, + .engineName = instance->vk.app_info.engine_name, + .engineVersion = instance->vk.app_info.engine_version, + }); instance->assume_full_subgroups = driQueryOptioni(&instance->dri_options, "anv_assume_full_subgroups"); diff --git a/src/loader/loader.c b/src/loader/loader.c index 243c1e9e83a..6b958c069ad 100644 --- a/src/loader/loader.c +++ b/src/loader/loader.c @@ -343,8 +343,11 @@ static char *loader_get_dri_config_driver(int fd) driParseOptionInfo(&defaultInitOptions, __driConfigOptionsLoader, ARRAY_SIZE(__driConfigOptionsLoader)); - driParseConfigFiles(&userInitOptions, &defaultInitOptions, 0, - "loader", kernel_driver, NULL, NULL, 0, NULL, 0); + driParseConfigFiles(&userInitOptions, &defaultInitOptions, + &(driConfigFileParseParams) { + .driverName = "loader", + .kernelDriverName = kernel_driver, + }); if (driCheckOption(&userInitOptions, "dri_driver", DRI_STRING)) { char *opt = driQueryOptionstr(&userInitOptions, "dri_driver"); /* not an empty string */ @@ -366,8 +369,10 @@ static char *loader_get_dri_config_device_id(void) driParseOptionInfo(&defaultInitOptions, __driConfigOptionsLoader, ARRAY_SIZE(__driConfigOptionsLoader)); - driParseConfigFiles(&userInitOptions, &defaultInitOptions, 0, - "loader", NULL, NULL, NULL, 0, NULL, 0); + driParseConfigFiles(&userInitOptions, &defaultInitOptions, + &(driConfigFileParseParams) { + .driverName = "loader", + }); if (driCheckOption(&userInitOptions, "device_id", DRI_STRING)) { char *opt = driQueryOptionstr(&userInitOptions, "device_id"); if (*opt) diff --git a/src/microsoft/vulkan/dzn_device.c b/src/microsoft/vulkan/dzn_device.c index 7248e0642db..73398ae43f3 100644 --- a/src/microsoft/vulkan/dzn_device.c +++ b/src/microsoft/vulkan/dzn_device.c @@ -1776,9 +1776,14 @@ dzn_init_dri_config(struct dzn_instance *instance) { driParseOptionInfo(&instance->available_dri_options, dzn_dri_options, ARRAY_SIZE(dzn_dri_options)); - driParseConfigFiles(&instance->dri_options, &instance->available_dri_options, 0, "dzn", NULL, NULL, - instance->vk.app_info.app_name, instance->vk.app_info.app_version, - instance->vk.app_info.engine_name, instance->vk.app_info.engine_version); + driParseConfigFiles(&instance->dri_options, &instance->available_dri_options, + &(driConfigFileParseParams) { + .driverName = "dzn", + .applicationName = instance->vk.app_info.app_name, + .applicationVersion = instance->vk.app_info.app_version, + .engineName = instance->vk.app_info.engine_name, + .engineVersion = instance->vk.app_info.engine_version, + }); } static VkResult diff --git a/src/nouveau/vulkan/nvk_instance.c b/src/nouveau/vulkan/nvk_instance.c index 5a8464d0510..7020c897a10 100644 --- a/src/nouveau/vulkan/nvk_instance.c +++ b/src/nouveau/vulkan/nvk_instance.c @@ -119,9 +119,14 @@ static void nvk_init_dri_options(struct nvk_instance *instance) { driParseOptionInfo(&instance->available_dri_options, nvk_dri_options, ARRAY_SIZE(nvk_dri_options)); - driParseConfigFiles(&instance->dri_options, &instance->available_dri_options, 0, "nvk", NULL, NULL, - instance->vk.app_info.app_name, instance->vk.app_info.app_version, - instance->vk.app_info.engine_name, instance->vk.app_info.engine_version); + driParseConfigFiles(&instance->dri_options, &instance->available_dri_options, + &(driConfigFileParseParams) { + .driverName = "nvk", + .applicationName = instance->vk.app_info.app_name, + .applicationVersion = instance->vk.app_info.app_version, + .engineName = instance->vk.app_info.engine_name, + .engineVersion = instance->vk.app_info.engine_version, + }); instance->force_vk_vendor = driQueryOptioni(&instance->dri_options, "force_vk_vendor"); diff --git a/src/panfrost/vulkan/panvk_instance.c b/src/panfrost/vulkan/panvk_instance.c index daf7da2102a..8c94408c7bd 100644 --- a/src/panfrost/vulkan/panvk_instance.c +++ b/src/panfrost/vulkan/panvk_instance.c @@ -215,9 +215,14 @@ static void panvk_init_dri_options(struct panvk_instance *instance) { driParseOptionInfo(&instance->available_dri_options, panvk_dri_options, ARRAY_SIZE(panvk_dri_options)); - driParseConfigFiles(&instance->dri_options, &instance->available_dri_options, 0, "panvk", NULL, NULL, - instance->vk.app_info.app_name, instance->vk.app_info.app_version, - instance->vk.app_info.engine_name, instance->vk.app_info.engine_version); + driParseConfigFiles(&instance->dri_options, &instance->available_dri_options, + &(driConfigFileParseParams) { + .driverName = "panvk", + .applicationName = instance->vk.app_info.app_name, + .applicationVersion = instance->vk.app_info.app_version, + .engineName = instance->vk.app_info.engine_name, + .engineVersion = instance->vk.app_info.engine_version, + }); instance->force_vk_vendor = driQueryOptioni(&instance->dri_options, "force_vk_vendor"); diff --git a/src/util/tests/xmlconfig.cpp b/src/util/tests/xmlconfig.cpp index e4dc02e694f..da922eb9573 100644 --- a/src/util/tests/xmlconfig.cpp +++ b/src/util/tests/xmlconfig.cpp @@ -170,10 +170,8 @@ TEST_F(xmlconfig_test, copy_cache) * "mesa_test_option" so the test shouldn't end up with something from the * user's homedir/environment that would override us. */ - driParseConfigFiles(&cache, &options, - 0, "driver", "drm", NULL, - NULL, 0, - NULL, 0); + driConfigFileParseParams params = { .driverName = "driver", .kernelDriverName = "drm" }; + driParseConfigFiles(&cache, &options, ¶ms); /* Can we inspect the cache? */ EXPECT_EQ(driCheckOption(&cache, "mesa_b_option", DRI_BOOL), true); @@ -206,10 +204,15 @@ xmlconfig_test::drirc_init(const char *driver, const char *drm, /* This should parse the "user" drirc files under ./tests/drirc_test/, * based on the setting of $HOME by meson.build. */ - driParseConfigFiles(&cache, &options, - 0, driver, drm, NULL, - app, appver, - engine, enginever); + driConfigFileParseParams params = { + .driverName = driver, + .kernelDriverName = drm, + .applicationName = app, + .applicationVersion = (uint32_t)appver, + .engineName = engine, + .engineVersion = (uint32_t)enginever, + }; + driParseConfigFiles(&cache, &options, ¶ms); return cache; } diff --git a/src/util/xmlconfig.c b/src/util/xmlconfig.c index 5922dc8704e..22e63d7ae75 100644 --- a/src/util/xmlconfig.c +++ b/src/util/xmlconfig.c @@ -1230,11 +1230,7 @@ driInjectExecName(const char *exec) void driParseConfigFiles(driOptionCache *cache, const driOptionCache *info, - int screenNum, const char *driverName, - const char *kernelDriverName, - const char *deviceName, - const char *applicationName, uint32_t applicationVersion, - const char *engineName, uint32_t engineVersion) + const driConfigFileParseParams *params) { initOptionCache(cache, info); struct OptConfData userData = {0}; @@ -1245,14 +1241,14 @@ driParseConfigFiles(driOptionCache *cache, const driOptionCache *info, execname = util_get_process_name(); userData.cache = cache; - userData.screenNum = screenNum; - userData.driverName = driverName; - userData.kernelDriverName = kernelDriverName; - userData.deviceName = deviceName; - userData.applicationName = applicationName ? applicationName : ""; - userData.applicationVersion = applicationVersion; - userData.engineName = engineName ? engineName : ""; - userData.engineVersion = engineVersion; + userData.screenNum = params->screenNum; + userData.driverName = params->driverName; + userData.kernelDriverName = params->kernelDriverName; + userData.deviceName = params->deviceName; + userData.applicationName = params->applicationName ? params->applicationName : ""; + userData.applicationVersion = params->applicationVersion; + userData.engineName = params->engineName ? params->engineName : ""; + userData.engineVersion = params->engineVersion; userData.execName = execname; #if WITH_XMLCONFIG diff --git a/src/util/xmlconfig.h b/src/util/xmlconfig.h index 6cc16eaca9c..9a820c50773 100644 --- a/src/util/xmlconfig.h +++ b/src/util/xmlconfig.h @@ -128,16 +128,23 @@ driGetOptionsXml(const driOptionDescription *configOptions, unsigned numOptions) void driParseOptionInfo(driOptionCache *info, const driOptionDescription *configOptions, unsigned numOptions); +typedef struct { + int screenNum; + const char *driverName; + const char *kernelDriverName; + const char *deviceName; + const char *applicationName; + uint32_t applicationVersion; + const char *engineName; + uint32_t engineVersion; +} driConfigFileParseParams; + /** \brief Initialize option cache from info and parse configuration files * - * To be called in CreateContext. screenNum, driverName, - * kernelDriverName, applicationName and engineName select device sections. */ + * To be called in CreateContext. Fields in driConfigFileParseParams + * select which device/application/engine sections apply. */ void driParseConfigFiles(driOptionCache *cache, const driOptionCache *info, - int screenNum, const char *driverName, - const char *kernelDriverName, - const char *deviceName, - const char *applicationName, uint32_t applicationVersion, - const char *engineName, uint32_t engineVersion); + const driConfigFileParseParams *params); /** \brief Destroy option info * * To be called in DestroyScreen */ diff --git a/src/virtio/vulkan/vn_instance.c b/src/virtio/vulkan/vn_instance.c index 8a3f9af873a..6caf0a37acf 100644 --- a/src/virtio/vulkan/vn_instance.c +++ b/src/virtio/vulkan/vn_instance.c @@ -366,12 +366,14 @@ vn_CreateInstance(const VkInstanceCreateInfo *pCreateInfo, driParseOptionInfo(&instance->available_dri_options, vn_dri_options, ARRAY_SIZE(vn_dri_options)); - driParseConfigFiles(&instance->dri_options, - &instance->available_dri_options, 0, "venus", NULL, - NULL, instance->base.vk.app_info.app_name, - instance->base.vk.app_info.app_version, - instance->base.vk.app_info.engine_name, - instance->base.vk.app_info.engine_version); + driParseConfigFiles(&instance->dri_options, &instance->available_dri_options, + &(driConfigFileParseParams) { + .driverName = "venus", + .applicationName = instance->base.vk.app_info.app_name, + .applicationVersion = instance->base.vk.app_info.app_version, + .engineName = instance->base.vk.app_info.engine_name, + .engineVersion = instance->base.vk.app_info.engine_version, + }); instance->renderer->info.has_implicit_fencing = driQueryOptionb(&instance->dri_options, "venus_implicit_fencing");