diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/auxiliary/meson.build | 2 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_driconf.c | 88 | ||||
-rw-r--r-- | src/gallium/auxiliary/util/u_driconf.h | 42 | ||||
-rw-r--r-- | src/gallium/frontends/dri/dri_screen.c | 60 |
4 files changed, 134 insertions, 58 deletions
diff --git a/src/gallium/auxiliary/meson.build b/src/gallium/auxiliary/meson.build index 094fbfca595..ca272fe428d 100644 --- a/src/gallium/auxiliary/meson.build +++ b/src/gallium/auxiliary/meson.build @@ -254,6 +254,8 @@ files_libgallium = files( 'util/u_draw.h', 'util/u_draw_quad.c', 'util/u_draw_quad.h', + 'util/u_driconf.c', + 'util/u_driconf.h', 'util/u_dual_blend.h', 'util/u_dump_defines.c', 'util/u_dump.h', diff --git a/src/gallium/auxiliary/util/u_driconf.c b/src/gallium/auxiliary/util/u_driconf.c new file mode 100644 index 00000000000..8aa5db8bff9 --- /dev/null +++ b/src/gallium/auxiliary/util/u_driconf.c @@ -0,0 +1,88 @@ +/* + * Copyright © Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#include "u_driconf.h" + +void +u_driconf_fill_st_options(struct st_config_options *options, + const struct driOptionCache *optionCache) +{ + options->disable_blend_func_extended = + driQueryOptionb(optionCache, "disable_blend_func_extended"); + options->disable_arb_gpu_shader5 = + driQueryOptionb(optionCache, "disable_arb_gpu_shader5"); + options->disable_glsl_line_continuations = + driQueryOptionb(optionCache, "disable_glsl_line_continuations"); + options->force_glsl_extensions_warn = + driQueryOptionb(optionCache, "force_glsl_extensions_warn"); + options->force_glsl_version = + driQueryOptioni(optionCache, "force_glsl_version"); + options->allow_extra_pp_tokens = + driQueryOptionb(optionCache, "allow_extra_pp_tokens"); + options->allow_glsl_extension_directive_midshader = + driQueryOptionb(optionCache, "allow_glsl_extension_directive_midshader"); + options->allow_glsl_120_subset_in_110 = + driQueryOptionb(optionCache, "allow_glsl_120_subset_in_110"); + options->allow_glsl_builtin_const_expression = + driQueryOptionb(optionCache, "allow_glsl_builtin_const_expression"); + options->allow_glsl_relaxed_es = + driQueryOptionb(optionCache, "allow_glsl_relaxed_es"); + options->allow_glsl_builtin_variable_redeclaration = + driQueryOptionb(optionCache, "allow_glsl_builtin_variable_redeclaration"); + options->allow_higher_compat_version = + driQueryOptionb(optionCache, "allow_higher_compat_version"); + options->glsl_ignore_write_to_readonly_var = + driQueryOptionb(optionCache, "glsl_ignore_write_to_readonly_var"); + options->glsl_zero_init = driQueryOptionb(optionCache, "glsl_zero_init"); + options->force_integer_tex_nearest = + driQueryOptionb(optionCache, "force_integer_tex_nearest"); + options->vs_position_always_invariant = + driQueryOptionb(optionCache, "vs_position_always_invariant"); + options->force_glsl_abs_sqrt = + driQueryOptionb(optionCache, "force_glsl_abs_sqrt"); + options->allow_glsl_cross_stage_interpolation_mismatch = + driQueryOptionb(optionCache, "allow_glsl_cross_stage_interpolation_mismatch"); + options->allow_draw_out_of_order = + driQueryOptionb(optionCache, "allow_draw_out_of_order"); + options->allow_incorrect_primitive_id = + driQueryOptionb(optionCache, "allow_incorrect_primitive_id"); + options->ignore_map_unsynchronized = + driQueryOptionb(optionCache, "ignore_map_unsynchronized"); + options->force_gl_names_reuse = + driQueryOptionb(optionCache, "force_gl_names_reuse"); + options->transcode_etc = + driQueryOptionb(optionCache, "transcode_etc"); + options->transcode_astc = + driQueryOptionb(optionCache, "transcode_astc"); + + char *vendor_str = driQueryOptionstr(optionCache, "force_gl_vendor"); + /* not an empty string */ + if (*vendor_str) + options->force_gl_vendor = strdup(vendor_str); + + char *renderer_str = driQueryOptionstr(optionCache, "force_gl_renderer"); + if (*renderer_str) + options->force_gl_renderer = strdup(renderer_str); + + driComputeOptionsSha1(optionCache, options->config_options_sha1); +} diff --git a/src/gallium/auxiliary/util/u_driconf.h b/src/gallium/auxiliary/util/u_driconf.h new file mode 100644 index 00000000000..00eead3013a --- /dev/null +++ b/src/gallium/auxiliary/util/u_driconf.h @@ -0,0 +1,42 @@ +/* + * Copyright © Microsoft Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#ifndef U_DRICONF_H_ +#define U_DRICONF_H_ + +#include "util/xmlconfig.h" +#include "frontend/api.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void +u_driconf_fill_st_options(struct st_config_options *options, + const struct driOptionCache *optionCache); + +#ifdef __cplusplus +} +#endif + +#endif /* U_DRICONF_H_ */ diff --git a/src/gallium/frontends/dri/dri_screen.c b/src/gallium/frontends/dri/dri_screen.c index b9e381543ab..0ec2b259e97 100644 --- a/src/gallium/frontends/dri/dri_screen.c +++ b/src/gallium/frontends/dri/dri_screen.c @@ -43,6 +43,7 @@ #include "frontend/drm_driver.h" #include "util/u_debug.h" +#include "util/u_driconf.h" #include "util/format/u_format_s3tc.h" #define MSAA_VISUAL_MAX_SAMPLES 32 @@ -64,64 +65,7 @@ dri_init_options(struct dri_screen *screen) struct st_config_options *options = &screen->options; const struct driOptionCache *optionCache = &screen->dev->option_cache; - options->disable_blend_func_extended = - driQueryOptionb(optionCache, "disable_blend_func_extended"); - options->disable_arb_gpu_shader5 = - driQueryOptionb(optionCache, "disable_arb_gpu_shader5"); - options->disable_glsl_line_continuations = - driQueryOptionb(optionCache, "disable_glsl_line_continuations"); - options->force_glsl_extensions_warn = - driQueryOptionb(optionCache, "force_glsl_extensions_warn"); - options->force_glsl_version = - driQueryOptioni(optionCache, "force_glsl_version"); - options->allow_extra_pp_tokens = - driQueryOptionb(optionCache, "allow_extra_pp_tokens"); - options->allow_glsl_extension_directive_midshader = - driQueryOptionb(optionCache, "allow_glsl_extension_directive_midshader"); - options->allow_glsl_120_subset_in_110 = - driQueryOptionb(optionCache, "allow_glsl_120_subset_in_110"); - options->allow_glsl_builtin_const_expression = - driQueryOptionb(optionCache, "allow_glsl_builtin_const_expression"); - options->allow_glsl_relaxed_es = - driQueryOptionb(optionCache, "allow_glsl_relaxed_es"); - options->allow_glsl_builtin_variable_redeclaration = - driQueryOptionb(optionCache, "allow_glsl_builtin_variable_redeclaration"); - options->allow_higher_compat_version = - driQueryOptionb(optionCache, "allow_higher_compat_version"); - options->glsl_ignore_write_to_readonly_var = - driQueryOptionb(optionCache, "glsl_ignore_write_to_readonly_var"); - options->glsl_zero_init = driQueryOptionb(optionCache, "glsl_zero_init"); - options->force_integer_tex_nearest = - driQueryOptionb(optionCache, "force_integer_tex_nearest"); - options->vs_position_always_invariant = - driQueryOptionb(optionCache, "vs_position_always_invariant"); - options->force_glsl_abs_sqrt = - driQueryOptionb(optionCache, "force_glsl_abs_sqrt"); - options->allow_glsl_cross_stage_interpolation_mismatch = - driQueryOptionb(optionCache, "allow_glsl_cross_stage_interpolation_mismatch"); - options->allow_draw_out_of_order = - driQueryOptionb(optionCache, "allow_draw_out_of_order"); - options->allow_incorrect_primitive_id = - driQueryOptionb(optionCache, "allow_incorrect_primitive_id"); - options->ignore_map_unsynchronized = - driQueryOptionb(optionCache, "ignore_map_unsynchronized"); - options->force_gl_names_reuse = - driQueryOptionb(optionCache, "force_gl_names_reuse"); - options->transcode_etc = - driQueryOptionb(optionCache, "transcode_etc"); - options->transcode_astc = - driQueryOptionb(optionCache, "transcode_astc"); - - char *vendor_str = driQueryOptionstr(optionCache, "force_gl_vendor"); - /* not an empty string */ - if (*vendor_str) - options->force_gl_vendor = strdup(vendor_str); - - char *renderer_str = driQueryOptionstr(optionCache, "force_gl_renderer"); - if (*renderer_str) - options->force_gl_renderer = strdup(renderer_str); - - driComputeOptionsSha1(optionCache, options->config_options_sha1); + u_driconf_fill_st_options(options, optionCache); } static unsigned |