15db71995Sopenharmony_ci/*
25db71995Sopenharmony_ci *
35db71995Sopenharmony_ci * Copyright (c) 2014-2021 The Khronos Group Inc.
45db71995Sopenharmony_ci * Copyright (c) 2014-2021 Valve Corporation
55db71995Sopenharmony_ci * Copyright (c) 2014-2021 LunarG, Inc.
65db71995Sopenharmony_ci *
75db71995Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
85db71995Sopenharmony_ci * you may not use this file except in compliance with the License.
95db71995Sopenharmony_ci * You may obtain a copy of the License at
105db71995Sopenharmony_ci *
115db71995Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
125db71995Sopenharmony_ci *
135db71995Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
145db71995Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
155db71995Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
165db71995Sopenharmony_ci * See the License for the specific language governing permissions and
175db71995Sopenharmony_ci * limitations under the License.
185db71995Sopenharmony_ci *
195db71995Sopenharmony_ci * Author: Jon Ashburn <jon@lunarg.com>
205db71995Sopenharmony_ci * Author: Courtney Goeltzenleuchter <courtney@LunarG.com>
215db71995Sopenharmony_ci * Author: Chia-I Wu <olvaffe@gmail.com>
225db71995Sopenharmony_ci * Author: Chia-I Wu <olv@lunarg.com>
235db71995Sopenharmony_ci * Author: Mark Lobodzinski <mark@LunarG.com>
245db71995Sopenharmony_ci * Author: Lenny Komow <lenny@lunarg.com>
255db71995Sopenharmony_ci * Author: Charles Giessen <charles@lunarg.com>
265db71995Sopenharmony_ci *
275db71995Sopenharmony_ci */
285db71995Sopenharmony_ci
295db71995Sopenharmony_ci#pragma once
305db71995Sopenharmony_ci
315db71995Sopenharmony_ci#include "loader_common.h"
325db71995Sopenharmony_ci
335db71995Sopenharmony_ci// Common functionality for accessing environemnt variables and whether the process is running in priviledged mode
345db71995Sopenharmony_ci
355db71995Sopenharmony_cichar *loader_getenv(const char *name, const struct loader_instance *inst);
365db71995Sopenharmony_civoid loader_free_getenv(char *val, const struct loader_instance *inst);
375db71995Sopenharmony_ci
385db71995Sopenharmony_ci#if defined(WIN32) || COMMON_UNIX_PLATFORMS
395db71995Sopenharmony_ci
405db71995Sopenharmony_cibool is_high_integrity();
415db71995Sopenharmony_ci
425db71995Sopenharmony_cichar *loader_secure_getenv(const char *name, const struct loader_instance *inst);
435db71995Sopenharmony_ci
445db71995Sopenharmony_ci#endif
455db71995Sopenharmony_ci
465db71995Sopenharmony_ciVkResult parse_generic_filter_environment_var(const struct loader_instance *inst, const char *env_var_name,
475db71995Sopenharmony_ci                                              struct loader_envvar_filter *filter_struct);
485db71995Sopenharmony_ciVkResult parse_layers_disable_filter_environment_var(const struct loader_instance *inst,
495db71995Sopenharmony_ci                                                     struct loader_envvar_disable_layers_filter *disable_struct);
505db71995Sopenharmony_ciVkResult parse_layer_environment_var_filters(const struct loader_instance *inst, struct loader_envvar_all_filters *layer_filters);
515db71995Sopenharmony_cibool check_name_matches_filter_environment_var(const char *name, const struct loader_envvar_filter *filter_struct);
525db71995Sopenharmony_ciVkResult loader_add_environment_layers(struct loader_instance *inst, const enum layer_type_flags type_flags,
535db71995Sopenharmony_ci                                       const struct loader_envvar_all_filters *filters,
545db71995Sopenharmony_ci                                       struct loader_pointer_layer_list *target_list,
555db71995Sopenharmony_ci                                       struct loader_pointer_layer_list *expanded_target_list,
565db71995Sopenharmony_ci                                       const struct loader_layer_list *source_list);
57