[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[Git][xorg-team/vulkan/vulkan-loader][upstream-unstable] 12 commits: Update LICENSE and remove COPYRIGHT



Title: GitLab

Timo Aaltonen pushed to branch upstream-unstable at X Strike Force / vulkan / vulkan-loader

Commits:

9 changed files:

Changes:

  • .travis.yml
    ... ... @@ -50,11 +50,6 @@ before_install:
    50 50
           sudo apt-get -qq update
    
    51 51
           sudo apt-get -y install libxkbcommon-dev libwayland-dev libxrandr-dev libx11-xcb-dev
    
    52 52
         fi
    
    53
    -  - |
    
    54
    -    if [[ "$VULKAN_BUILD_TARGET" == "MACOS" ]]; then
    
    55
    -      # We need to upgrade to a newer python
    
    56
    -      brew upgrade python3
    
    57
    -    fi
    
    58 53
       - |
    
    59 54
         if [[ "$VULKAN_BUILD_TARGET" == "LINUX" ]] || [[ "$VULKAN_BUILD_TARGET" == "MACOS" ]]; then
    
    60 55
           # Install dependencies
    

  • COPYRIGHT.txt deleted
    1
    -This file contains other licenses and their copyrights that appear in this
    
    2
    -repository besides Apache 2.0 license.
    
    3
    -
    
    4
    -===================================================
    
    5
    -/*
    
    6
    -  Copyright (c) 2009 Dave Gamble
    
    7
    -
    
    8
    -  Permission is hereby granted, free of charge, to any person obtaining a copy
    
    9
    -  of this software and associated documentation files (the "Software"), to deal
    
    10
    -  in the Software without restriction, including without limitation the rights
    
    11
    -  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    
    12
    -  copies of the Software, and to permit persons to whom the Software is
    
    13
    -  furnished to do so, subject to the following conditions:
    
    14
    -
    
    15
    -  The above copyright notice and this permission notice shall be included in
    
    16
    -  all copies or substantial portions of the Software.
    
    17
    -
    
    18
    -  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    
    19
    -  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    
    20
    -  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    
    21
    -  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    
    22
    -  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    
    23
    -  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    
    24
    -  THE SOFTWARE.
    
    25
    -*/
    
    26
    -
    
    27
    -===================================================
    
    28
    -/*
    
    29
    -
    
    30
    -    Copyright Kevlin Henney, 1997, 2003, 2012. All rights reserved.
    
    31
    -
    
    32
    -    Permission to use, copy, modify, and distribute this software and its
    
    33
    -    documentation for any purpose is hereby granted without fee, provided
    
    34
    -    that this copyright and permissions notice appear in all copies and
    
    35
    -    derivatives.
    
    36
    -    
    
    37
    -    This software is supplied "as is" without express or implied warranty.
    
    38
    -
    
    39
    -    But that said, if there are any problems please get in touch.
    
    40
    -
    
    41
    -*/
    
    42
    -
    
    43
    -===================================================
    
    44
    -Copyright 2008, Google Inc.
    
    45
    -All rights reserved.
    
    46
    -
    
    47
    -Redistribution and use in source and binary forms, with or without
    
    48
    -modification, are permitted provided that the following conditions are
    
    49
    -met:
    
    50
    -
    
    51
    -    * Redistributions of source code must retain the above copyright
    
    52
    -notice, this list of conditions and the following disclaimer.
    
    53
    -    * Redistributions in binary form must reproduce the above
    
    54
    -copyright notice, this list of conditions and the following disclaimer
    
    55
    -in the documentation and/or other materials provided with the
    
    56
    -distribution.
    
    57
    -    * Neither the name of Google Inc. nor the names of its
    
    58
    -contributors may be used to endorse or promote products derived from
    
    59
    -this software without specific prior written permission.
    
    60
    -
    
    61
    -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    
    62
    -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    
    63
    -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    
    64
    -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
    
    65
    -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    
    66
    -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    
    67
    -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    
    68
    -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    
    69
    -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    
    70
    -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    
    71
    -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    
    72
    -
    
    73
    -===================================================
    
    74
    -Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
    
    75
    -All rights reserved.
    
    76
    -
    
    77
    -Redistribution and use in source and binary forms, with or without
    
    78
    -modification, are permitted provided that the following conditions
    
    79
    -are met:
    
    80
    -
    
    81
    -* Redistributions of source code must retain the above copyright
    
    82
    -  notice, this list of conditions and the following disclaimer.
    
    83
    -
    
    84
    -* Redistributions in binary form must reproduce the above copyright
    
    85
    -  notice, this list of conditions and the following disclaimer in the
    
    86
    -  documentation and/or other materials provided with the distribution.
    
    87
    -
    
    88
    -* Neither the names of Kitware, Inc., the Insight Software Consortium,
    
    89
    -  nor the names of their contributors may be used to endorse or promote
    
    90
    -  products derived from this software without specific prior written
    
    91
    -  permission.
    
    92
    -
    
    93
    -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    
    94
    -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    
    95
    -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    
    96
    -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
    
    97
    -HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    
    98
    -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    
    99
    -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    
    100
    -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    
    101
    -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    
    102
    -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    
    103
    -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    
    104
    -
    
    105
    -===================================================
    
    106
    -Copyright (c) 2011 Fredrik Höglund <fredrik@kde.org>
    
    107
    -Copyright (c) 2008 Helio Chissini de Castro, <helio@kde.org>
    
    108
    -Copyright (c) 2007 Matthias Kretz, <kretz@kde.org>
    
    109
    -
    
    110
    -Redistribution and use is allowed according to the terms of the BSD license.
    
    111
    -
    
    112
    -===================================================
    
    113
    -/// Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net)
    
    114
    -/// Permission is hereby granted, free of charge, to any person obtaining a copy
    
    115
    -/// of this software and associated documentation files (the "Software"), to deal
    
    116
    -/// in the Software without restriction, including without limitation the rights
    
    117
    -/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    
    118
    -/// copies of the Software, and to permit persons to whom the Software is
    
    119
    -/// furnished to do so, subject to the following conditions:
    
    120
    -/// 
    
    121
    -/// The above copyright notice and this permission notice shall be included in
    
    122
    -/// all copies or substantial portions of the Software.
    
    123
    -/// 
    
    124
    -/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    
    125
    -/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    
    126
    -/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    
    127
    -/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    
    128
    -/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    
    129
    -/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    
    130
    -/// THE SOFTWARE.
    
    131
    -///

  • LICENSE.txt
    1
    +The majority of files in this project use the Apache 2.0 License.
    
    2
    +There are a few exceptions and their license can be found in the source.
    
    3
    +Any license deviations from Apache 2.0 are "more permissive" licenses.
    
    4
    +
    
    5
    +===========================================================================================
    
    1 6
     
    
    2 7
                                      Apache License
    
    3 8
                                Version 2.0, January 2004
    

  • loader/LoaderAndLayerInterface.md
    1
    +<!-- markdownlint-disable MD041 -->
    
    2
    +[![Khronos Vulkan][1]][2]
    
    3
    +
    
    4
    +[1]: https://vulkan.lunarg.com/img/Vulkan_100px_Dec16.png "https://www.khronos.org/vulkan/"
    
    5
    +[2]: https://www.khronos.org/vulkan/
    
    6
    +
    
    1 7
     # Architecture of the Vulkan Loader Interfaces
    
    8
    +[![Creative Commons][3]][4]
    
    9
    +
    
    10
    +<!-- Copyright &copy; 2015-2019 LunarG, Inc. -->
    
    11
    +
    
    2 12
     
    
    13
    +[3]: https://i.creativecommons.org/l/by-nd/4.0/88x31.png "Creative Commons License"
    
    14
    +[4]: https://creativecommons.org/licenses/by-nd/4.0/
    
    3 15
     ## Table of Contents
    
    4 16
       * [Overview](#overview)
    
    5 17
         * [Who Should Read This Document](#who-should-read-this-document)
    

  • loader/loader.c
    1 1
     /*
    
    2 2
      *
    
    3
    - * Copyright (c) 2014-2018 The Khronos Group Inc.
    
    4
    - * Copyright (c) 2014-2018 Valve Corporation
    
    5
    - * Copyright (c) 2014-2018 LunarG, Inc.
    
    3
    + * Copyright (c) 2014-2019 The Khronos Group Inc.
    
    4
    + * Copyright (c) 2014-2019 Valve Corporation
    
    5
    + * Copyright (c) 2014-2019 LunarG, Inc.
    
    6 6
      * Copyright (C) 2015 Google Inc.
    
    7 7
      *
    
    8 8
      * Licensed under the Apache License, Version 2.0 (the "License");
    
    ... ... @@ -1005,6 +1005,7 @@ static struct loader_layer_properties *loaderGetNextLayerPropertySlot(const stru
    1005 1005
                 return NULL;
    
    1006 1006
             }
    
    1007 1007
             layer_list->list = new_ptr;
    
    1008
    +        memset((uint8_t *)layer_list->list + layer_list->capacity, 0, layer_list->capacity);
    
    1008 1009
             layer_list->capacity *= 2;
    
    1009 1010
         }
    
    1010 1011
     
    
    ... ... @@ -1048,6 +1049,17 @@ static bool loaderFindLayerNameInMetaLayer(const struct loader_instance *inst, c
    1048 1049
         return false;
    
    1049 1050
     }
    
    1050 1051
     
    
    1052
    +// Search the override layer's blacklist for a layer matching the given layer name
    
    1053
    +static bool loaderFindLayerNameInBlacklist(const struct loader_instance *inst, const char *layer_name,
    
    1054
    +                                           struct loader_layer_list *layer_list, struct loader_layer_properties *meta_layer_props) {
    
    1055
    +    for (uint32_t black_layer = 0; black_layer < meta_layer_props->num_blacklist_layers; black_layer++) {
    
    1056
    +        if (!strcmp(meta_layer_props->blacklist_layer_names[black_layer], layer_name)) {
    
    1057
    +            return true;
    
    1058
    +        }
    
    1059
    +    }
    
    1060
    +    return false;
    
    1061
    +}
    
    1062
    +
    
    1051 1063
     // Remove all layer properties entries from the list
    
    1052 1064
     void loaderDeleteLayerListAndProperties(const struct loader_instance *inst, struct loader_layer_list *layer_list) {
    
    1053 1065
         uint32_t i, j, k;
    
    ... ... @@ -1056,6 +1068,10 @@ void loaderDeleteLayerListAndProperties(const struct loader_instance *inst, stru
    1056 1068
         if (!layer_list) return;
    
    1057 1069
     
    
    1058 1070
         for (i = 0; i < layer_list->count; i++) {
    
    1071
    +        if (NULL != layer_list->list[i].blacklist_layer_names) {
    
    1072
    +            loader_instance_heap_free(inst, layer_list->list[i].blacklist_layer_names);
    
    1073
    +            layer_list->list[i].blacklist_layer_names = NULL;
    
    1074
    +        }
    
    1059 1075
             if (NULL != layer_list->list[i].component_layer_names) {
    
    1060 1076
                 loader_instance_heap_free(inst, layer_list->list[i].component_layer_names);
    
    1061 1077
                 layer_list->list[i].component_layer_names = NULL;
    
    ... ... @@ -1087,9 +1103,9 @@ void loaderDeleteLayerListAndProperties(const struct loader_instance *inst, stru
    1087 1103
         }
    
    1088 1104
     }
    
    1089 1105
     
    
    1090
    -// Remove all layers in the layer list that are not found inside the override layer.
    
    1106
    +// Remove all layers in the layer list that are blacklisted by the override layer.
    
    1091 1107
     // NOTE: This should only be called if an override layer is found and not expired.
    
    1092
    -void loaderRemoveLayersNotInOverride(const struct loader_instance *inst, struct loader_layer_list *layer_list) {
    
    1108
    +void loaderRemoveLayersInBlacklist(const struct loader_instance *inst, struct loader_layer_list *layer_list) {
    
    1093 1109
         struct loader_layer_properties *override_prop = loaderFindLayerProperty(VK_OVERRIDE_LAYER_NAME, layer_list);
    
    1094 1110
         if (NULL == override_prop) {
    
    1095 1111
             return;
    
    ... ... @@ -1104,17 +1120,18 @@ void loaderRemoveLayersNotInOverride(const struct loader_instance *inst, struct
    1104 1120
                 continue;
    
    1105 1121
             }
    
    1106 1122
     
    
    1107
    -        // If not found in the override layer, remove it
    
    1108
    -        if (!loaderFindLayerNameInMetaLayer(inst, cur_layer_name, layer_list, override_prop)) {
    
    1123
    +        // If found in the override layer's blacklist, remove it
    
    1124
    +        if (loaderFindLayerNameInBlacklist(inst, cur_layer_name, layer_list, override_prop)) {
    
    1109 1125
                 loader_log(inst, VK_DEBUG_REPORT_DEBUG_BIT_EXT, 0,
    
    1110
    -                       "loaderRemoveLayersNotInOverride : Override layer is active, and layer %s is not list"
    
    1111
    -                       " inside of it.  So removing layer from current layer list.",
    
    1112
    -                       cur_layer_name);
    
    1126
    +                "loaderRemoveLayersInBlacklist: Override layer is active and layer % is in the blacklist"
    
    1127
    +                " inside of it. Removing that layer from current layer list.",
    
    1128
    +                cur_layer_name);
    
    1113 1129
     
    
    1114 1130
                 if (cur_layer_prop.type_flags & VK_LAYER_TYPE_FLAG_META_LAYER) {
    
    1115 1131
                     // Delete the component layers
    
    1116 1132
                     loader_instance_heap_free(inst, cur_layer_prop.component_layer_names);
    
    1117 1133
                     loader_instance_heap_free(inst, cur_layer_prop.override_paths);
    
    1134
    +                // Never need to free the blacklist, since it can only exist in the override layer
    
    1118 1135
                 }
    
    1119 1136
     
    
    1120 1137
                 // Remove the current invalid meta-layer from the layer list.  Use memmove since we are
    
    ... ... @@ -1174,7 +1191,7 @@ void loaderRemoveLayersNotInImplicitMetaLayers(const struct loader_instance *ins
    1174 1191
             struct loader_layer_properties cur_layer_prop = layer_list->list[i];
    
    1175 1192
             if (!cur_layer_prop.keep) {
    
    1176 1193
                 loader_log(inst, VK_DEBUG_REPORT_DEBUG_BIT_EXT, 0,
    
    1177
    -                       "loaderRemoveLayersNotInOverride : Implicit meta-layers are active, and layer %s is not list"
    
    1194
    +                       "loaderRemoveLayersNotInImplicitMetaLayers : Implicit meta-layers are active, and layer %s is not list"
    
    1178 1195
                            " inside of any.  So removing layer from current layer list.",
    
    1179 1196
                            cur_layer_prop.info.layerName);
    
    1180 1197
     
    
    ... ... @@ -2567,6 +2584,9 @@ static void VerifyAllMetaLayers(struct loader_instance *inst, struct loader_laye
    2567 2584
     
    
    2568 2585
                 // Delete the component layers
    
    2569 2586
                 loader_instance_heap_free(inst, prop->component_layer_names);
    
    2587
    +            if (prop->blacklist_layer_names != NULL) {
    
    2588
    +                loader_instance_heap_free(inst, prop->blacklist_layer_names);
    
    2589
    +            }
    
    2570 2590
     
    
    2571 2591
                 // Remove the current invalid meta-layer from the layer list.  Use memmove since we are
    
    2572 2592
                 // overlapping the source and destination addresses.
    
    ... ... @@ -2602,7 +2622,7 @@ static VkResult loaderReadLayerJson(const struct loader_instance *inst, struct l
    2602 2622
         char *temp;
    
    2603 2623
         char *name, *type, *library_path_str, *api_version;
    
    2604 2624
         char *implementation_version, *description;
    
    2605
    -    cJSON *ext_item, *library_path, *component_layers, *override_paths;
    
    2625
    +    cJSON *ext_item, *library_path, *component_layers, *override_paths, *blacklisted_layers;
    
    2606 2626
         VkExtensionProperties ext_prop;
    
    2607 2627
         VkResult result = VK_ERROR_INITIALIZATION_FAILED;
    
    2608 2628
         struct loader_layer_properties *props = NULL;
    
    ... ... @@ -2849,6 +2869,42 @@ static VkResult loaderReadLayerJson(const struct loader_instance *inst, struct l
    2849 2869
             goto out;
    
    2850 2870
         }
    
    2851 2871
     
    
    2872
    +    props->num_blacklist_layers = 0;
    
    2873
    +    props->blacklist_layer_names = NULL;
    
    2874
    +    blacklisted_layers = cJSON_GetObjectItem(layer_node, "blacklisted_layers");
    
    2875
    +    if (blacklisted_layers != NULL && strcmp(name, VK_OVERRIDE_LAYER_NAME)) {
    
    2876
    +        loader_log(inst, VK_DEBUG_REPORT_WARNING_BIT_EXT, 0,
    
    2877
    +            "Layer %s contains a blacklist, but a blacklist can only be provided by the override metalayer. "
    
    2878
    +            "This blacklist will be ignored.", name);
    
    2879
    +    } else if (blacklisted_layers != NULL) {
    
    2880
    +        props->num_blacklist_layers = cJSON_GetArraySize(blacklisted_layers);
    
    2881
    +
    
    2882
    +        // Allocate the blacklist array
    
    2883
    +        props->blacklist_layer_names = loader_instance_heap_alloc(
    
    2884
    +            inst, sizeof(char[MAX_STRING_SIZE]) * props->num_blacklist_layers, VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE);
    
    2885
    +        if (props->blacklist_layer_names == NULL) {
    
    2886
    +            result = VK_ERROR_OUT_OF_HOST_MEMORY;
    
    2887
    +            goto out;
    
    2888
    +        }
    
    2889
    +
    
    2890
    +        // Copy the blacklisted layers into the array
    
    2891
    +        for (i = 0; i < (int)props->num_blacklist_layers; ++i) {
    
    2892
    +            cJSON *black_layer = cJSON_GetArrayItem(blacklisted_layers, i);
    
    2893
    +            if (black_layer == NULL) {
    
    2894
    +                continue;
    
    2895
    +            }
    
    2896
    +            temp = cJSON_Print(black_layer);
    
    2897
    +            if (temp == NULL) {
    
    2898
    +                result = VK_ERROR_OUT_OF_HOST_MEMORY;
    
    2899
    +                goto out;
    
    2900
    +            }
    
    2901
    +            temp[strlen(temp) - 1] = '\0';
    
    2902
    +            strncpy(props->blacklist_layer_names[i], temp + 1, MAX_STRING_SIZE - 1);
    
    2903
    +            props->blacklist_layer_names[i][MAX_STRING_SIZE - 1] = '\0';
    
    2904
    +            cJSON_Free(temp);
    
    2905
    +        }
    
    2906
    +    }
    
    2907
    +
    
    2852 2908
         override_paths = cJSON_GetObjectItem(layer_node, "override_paths");
    
    2853 2909
         if (NULL != override_paths) {
    
    2854 2910
             if (version.major == 1 && (version.minor < 1 || version.patch < 1)) {
    
    ... ... @@ -3136,12 +3192,17 @@ out:
    3136 3192
     #undef GET_JSON_OBJECT
    
    3137 3193
     
    
    3138 3194
         if (VK_SUCCESS != result && NULL != props) {
    
    3195
    +        if (NULL != props->blacklist_layer_names) {
    
    3196
    +            loader_instance_heap_free(inst, props->blacklist_layer_names);
    
    3197
    +        }
    
    3139 3198
             if (NULL != props->component_layer_names) {
    
    3140 3199
                 loader_instance_heap_free(inst, props->component_layer_names);
    
    3141 3200
             }
    
    3142 3201
             if (NULL != props->override_paths) {
    
    3143 3202
                 loader_instance_heap_free(inst, props->override_paths);
    
    3144 3203
             }
    
    3204
    +        props->num_blacklist_layers = 0;
    
    3205
    +        props->blacklist_layer_names = NULL;
    
    3145 3206
             props->num_component_layers = 0;
    
    3146 3207
             props->component_layer_names = NULL;
    
    3147 3208
             props->num_override_paths = 0;
    
    ... ... @@ -4239,7 +4300,7 @@ void loaderScanForLayers(struct loader_instance *inst, struct loader_layer_list
    4239 4300
         VerifyAllMetaLayers(inst, instance_layers, &override_layer_valid);
    
    4240 4301
     
    
    4241 4302
         if (override_layer_valid) {
    
    4242
    -        loaderRemoveLayersNotInOverride(inst, instance_layers);
    
    4303
    +        loaderRemoveLayersInBlacklist(inst, instance_layers);
    
    4243 4304
             if (NULL != inst) {
    
    4244 4305
                 inst->override_layer_present = true;
    
    4245 4306
             }
    
    ... ... @@ -4346,7 +4407,7 @@ void loaderScanForImplicitLayers(struct loader_instance *inst, struct loader_lay
    4346 4407
     
    
    4347 4408
         // If either the override layer or an implicit meta-layer are present, we need to add
    
    4348 4409
         // explicit layer info as well.  Not to worry, though, all explicit layers not included
    
    4349
    -    // in the override layer will be removed below in loaderRemoveLayersNotInOverride().
    
    4410
    +    // in the override layer will be removed below in loaderRemoveLayersInBlacklist().
    
    4350 4411
         if (override_layer_valid || implicit_metalayer_present) {
    
    4351 4412
             if (VK_SUCCESS != loaderGetDataFiles(inst, LOADER_DATA_FILE_MANIFEST_LAYER, true, "VK_LAYER_PATH", override_paths,
    
    4352 4413
                                                  VK_ELAYERS_INFO_REGISTRY_LOC, VK_ELAYERS_INFO_RELATIVE_DIR, &manifest_files)) {
    
    ... ... @@ -4383,7 +4444,7 @@ void loaderScanForImplicitLayers(struct loader_instance *inst, struct loader_lay
    4383 4444
         VerifyAllMetaLayers(inst, instance_layers, &override_layer_valid);
    
    4384 4445
     
    
    4385 4446
         if (override_layer_valid) {
    
    4386
    -        loaderRemoveLayersNotInOverride(inst, instance_layers);
    
    4447
    +        loaderRemoveLayersInBlacklist(inst, instance_layers);
    
    4387 4448
             if (NULL != inst) {
    
    4388 4449
                 inst->override_layer_present = true;
    
    4389 4450
             }
    

  • loader/loader.h
    1 1
     /*
    
    2 2
      *
    
    3
    - * Copyright (c) 2014-2017 The Khronos Group Inc.
    
    4
    - * Copyright (c) 2014-2017 Valve Corporation
    
    5
    - * Copyright (c) 2014-2017 LunarG, Inc.
    
    3
    + * Copyright (c) 2014-2019 The Khronos Group Inc.
    
    4
    + * Copyright (c) 2014-2019 Valve Corporation
    
    5
    + * Copyright (c) 2014-2019 LunarG, Inc.
    
    6 6
      * Copyright (C) 2015 Google Inc.
    
    7 7
      *
    
    8 8
      * Licensed under the Apache License, Version 2.0 (the "License");
    
    ... ... @@ -22,6 +22,7 @@
    22 22
      * Author: Chia-I Wu <olvaffe@gmail.com>
    
    23 23
      * Author: Chia-I Wu <olv@lunarg.com>
    
    24 24
      * Author: Mark Lobodzinski <mark@LunarG.com>
    
    25
    + * Author: Lenny Komow <lenny@lunarg.com>
    
    25 26
      *
    
    26 27
      */
    
    27 28
     
    
    ... ... @@ -152,6 +153,8 @@ struct loader_layer_properties {
    152 153
         bool has_expiration;
    
    153 154
         struct loader_override_expiration expiration;
    
    154 155
         bool keep;
    
    156
    +    uint32_t num_blacklist_layers;
    
    157
    +    char (*blacklist_layer_names)[MAX_STRING_SIZE];
    
    155 158
     };
    
    156 159
     
    
    157 160
     struct loader_layer_list {
    

  • loader/loader.rc
    1 1
     //
    
    2
    -// Copyright (c) 2014-2017 The Khronos Group Inc.
    
    3
    -// Copyright (c) 2014-2017 Valve Corporation
    
    4
    -// Copyright (c) 2014-2017 LunarG, Inc.
    
    2
    +// Copyright (c) 2014-2019 The Khronos Group Inc.
    
    3
    +// Copyright (c) 2014-2019 Valve Corporation
    
    4
    +// Copyright (c) 2014-2019 LunarG, Inc.
    
    5 5
     //
    
    6 6
     // Licensed under the Apache License, Version 2.0 (the "License");
    
    7 7
     // you may not use this file except in compliance with the License.
    
    ... ... @@ -86,7 +86,7 @@ BEGIN
    86 86
             BEGIN
    
    87 87
                 VALUE "FileDescription", VER_FILE_DESCRIPTION_STR
    
    88 88
                 VALUE "FileVersion", VER_FILE_VERSION_STR
    
    89
    -            VALUE "LegalCopyright", "Copyright (C) 2015-2018"
    
    89
    +            VALUE "LegalCopyright", "Copyright (C) 2015-2019"
    
    90 90
                 VALUE "ProductName", "Vulkan Runtime"
    
    91 91
                 VALUE "ProductVersion", VER_FILE_VERSION_STR
    
    92 92
             END
    

  • scripts/known_good.json
    ... ... @@ -6,7 +6,7 @@
    6 6
           "sub_dir" : "Vulkan-Headers",
    
    7 7
           "build_dir" : "Vulkan-Headers/build",
    
    8 8
           "install_dir" : "Vulkan-Headers/build/install",
    
    9
    -      "commit" : "v1.1.97"
    
    9
    +      "commit" : "v1.1.101"
    
    10 10
         }
    
    11 11
       ],
    
    12 12
       "install_names" : {
    

  • scripts/loader_genvk.py
    1 1
     #!/usr/bin/python3
    
    2 2
     #
    
    3
    -# Copyright (c) 2013-2018 The Khronos Group Inc.
    
    3
    +# Copyright (c) 2013-2019 The Khronos Group Inc.
    
    4 4
     #
    
    5 5
     # Licensed under the Apache License, Version 2.0 (the "License");
    
    6 6
     # you may not use this file except in compliance with the License.
    
    ... ... @@ -21,12 +21,13 @@ startTime = None
    21 21
     
    
    22 22
     def startTimer(timeit):
    
    23 23
         global startTime
    
    24
    -    startTime = time.process_time()
    
    24
    +    if timeit:
    
    25
    +        startTime = time.process_time()
    
    25 26
     
    
    26 27
     def endTimer(timeit, msg):
    
    27 28
         global startTime
    
    28
    -    endTime = time.process_time()
    
    29
    -    if (timeit):
    
    29
    +    if timeit:
    
    30
    +        endTime = time.process_time()
    
    30 31
             write(msg, endTime - startTime, file=sys.stderr)
    
    31 32
             startTime = None
    
    32 33
     
    
    ... ... @@ -81,7 +82,7 @@ def makeGenOpts(args):
    81 82
         # Copyright text prefixing all headers (list of strings).
    
    82 83
         prefixStrings = [
    
    83 84
             '/*',
    
    84
    -        '** Copyright (c) 2015-2018 The Khronos Group Inc.',
    
    85
    +        '** Copyright (c) 2015-2019 The Khronos Group Inc.',
    
    85 86
             '**',
    
    86 87
             '** Licensed under the Apache License, Version 2.0 (the "License");',
    
    87 88
             '** you may not use this file except in compliance with the License.',
    


  • Reply to: