• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1{
2    "file_format_version": "1.2.0",
3    "layer": {
4        "test_code_description": "This file is literally a copy of an installed Validation layer manifest file for linux. It was chosen because it contains a lot of complex json structures that aren't present in the test framework's generated json, so exercises cJSON better",
5        "name": "VK_LAYER_KHRONOS_validation",
6        "type": "GLOBAL",
7        "library_path": "libVkLayer_khronos_validation.so",
8        "api_version": "1.3.231",
9        "implementation_version": "1",
10        "description": "Khronos Validation Layer",
11        "introduction": "The main, comprehensive Khronos validation layer.\n\nVulkan is an Explicit API, enabling direct control over how GPUs actually work. By design, minimal error checking is done inside a Vulkan driver. Applications have full control and responsibility for correct operation. Any errors in how Vulkan is used can result in a crash. \n\nThe Khronos Valiation Layer can be enabled to assist development by enabling developers to verify their applications correctly use the Vulkan API.",
12        "platforms": [
13            "WINDOWS",
14            "LINUX",
15            "ANDROID",
16            "MACOS"
17        ],
18        "url": "https://vulkan.lunarg.com/doc/sdk/latest/windows/khronos_validation_layer.html",
19        "instance_extensions": [
20            {
21                "name": "VK_EXT_debug_report",
22                "spec_version": "9"
23            },
24            {
25                "name": "VK_EXT_debug_utils",
26                "spec_version": "1"
27            },
28            {
29                "name": "VK_EXT_validation_features",
30                "spec_version": "2"
31            }
32        ],
33        "device_extensions": [
34            {
35                "name": "VK_EXT_debug_marker",
36                "spec_version": "4",
37                "entrypoints": [
38                    "vkDebugMarkerSetObjectTagEXT",
39                    "vkDebugMarkerSetObjectNameEXT",
40                    "vkCmdDebugMarkerBeginEXT",
41                    "vkCmdDebugMarkerEndEXT",
42                    "vkCmdDebugMarkerInsertEXT"
43                ]
44            },
45            {
46                "name": "VK_EXT_validation_cache",
47                "spec_version": "1",
48                "entrypoints": [
49                    "vkCreateValidationCacheEXT",
50                    "vkDestroyValidationCacheEXT",
51                    "vkGetValidationCacheDataEXT",
52                    "vkMergeValidationCachesEXT"
53                ]
54            },
55            {
56                "name": "VK_EXT_tooling_info",
57                "spec_version": "1",
58                "entrypoints": [
59                    "vkGetPhysicalDeviceToolPropertiesEXT"
60                ]
61            }
62        ],
63        "features": {
64            "presets": [
65                {
66                    "label": "Standard",
67                    "description": "Good default validation setup that balance validation coverage and performance.",
68                    "platforms": [
69                        "WINDOWS",
70                        "LINUX",
71                        "MACOS",
72                        "ANDROID"
73                    ],
74                    "status": "STABLE",
75                    "settings": [
76                        {
77                            "key": "enables",
78                            "value": []
79                        },
80                        {
81                            "key": "disables",
82                            "value": [
83                                "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT"
84                            ]
85                        }
86                    ]
87                },
88                {
89                    "label": "Reduced-Overhead",
90                    "description": "Disables some checks in the interest of better performance.",
91                    "platforms": [
92                        "WINDOWS",
93                        "LINUX",
94                        "MACOS"
95                    ],
96                    "status": "STABLE",
97                    "editor_state": "01110111111111111111111001111111111110",
98                    "settings": [
99                        {
100                            "key": "enables",
101                            "value": []
102                        },
103                        {
104                            "key": "disables",
105                            "value": [
106                                "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT",
107                                "VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT",
108                                "VALIDATION_CHECK_DISABLE_IMAGE_LAYOUT_VALIDATION",
109                                "VALIDATION_CHECK_DISABLE_COMMAND_BUFFER_STATE",
110                                "VALIDATION_CHECK_DISABLE_OBJECT_IN_USE",
111                                "VALIDATION_CHECK_DISABLE_QUERY_VALIDATION"
112                            ]
113                        }
114                    ]
115                },
116                {
117                    "label": "Best Practices",
118                    "description": "Provides warnings on valid API usage that is potential API misuse.",
119                    "platforms": [
120                        "WINDOWS",
121                        "LINUX",
122                        "MACOS",
123                        "ANDROID"
124                    ],
125                    "status": "STABLE",
126                    "settings": [
127                        {
128                            "key": "enables",
129                            "value": [
130                                "VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT"
131                            ]
132                        },
133                        {
134                            "key": "disables",
135                            "value": [
136                                "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT",
137                                "VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT",
138                                "VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT",
139                                "VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT",
140                                "VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT"
141                            ]
142                        }
143                    ]
144                },
145                {
146                    "label": "Synchronization",
147                    "description": "Identify resource access conflicts due to missing or incorrect synchronization operations between actions reading or writing the same regions of memory.",
148                    "platforms": [
149                        "WINDOWS",
150                        "LINUX",
151                        "MACOS",
152                        "ANDROID"
153                    ],
154                    "status": "STABLE",
155                    "settings": [
156                        {
157                            "key": "enables",
158                            "value": [
159                                "VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT"
160                            ]
161                        },
162                        {
163                            "key": "disables",
164                            "value": [
165                                "VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT",
166                                "VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT",
167                                "VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT",
168                                "VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT"
169                            ]
170                        }
171                    ]
172                },
173                {
174                    "label": "GPU-Assisted",
175                    "description": "Check for API usage errors at shader execution time.",
176                    "platforms": [
177                        "WINDOWS",
178                        "LINUX"
179                    ],
180                    "status": "STABLE",
181                    "settings": [
182                        {
183                            "key": "enables",
184                            "value": [
185                                "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT",
186                                "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT"
187                            ]
188                        },
189                        {
190                            "key": "disables",
191                            "value": [
192                                "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT",
193                                "VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT",
194                                "VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT",
195                                "VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT",
196                                "VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT"
197                            ]
198                        }
199                    ]
200                },
201                {
202                    "label": "Debug Printf",
203                    "description": "Debug shader code by \"printing\" any values of interest to the debug callback or stdout.",
204                    "platforms": [
205                        "WINDOWS",
206                        "LINUX"
207                    ],
208                    "status": "STABLE",
209                    "settings": [
210                        {
211                            "key": "enables",
212                            "value": [
213                                "VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT"
214                            ]
215                        },
216                        {
217                            "key": "disables",
218                            "value": [
219                                "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT",
220                                "VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT",
221                                "VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT",
222                                "VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT",
223                                "VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT"
224                            ]
225                        },
226                        {
227                            "key": "enable_message_limit",
228                            "value": false
229                        }
230                    ]
231                }
232            ],
233            "settings": [
234                {
235                    "key": "debug_action",
236                    "label": "Debug Action",
237                    "description": "Specifies what action is to be taken when a layer reports information",
238                    "type": "FLAGS",
239                    "flags": [
240                        {
241                            "key": "VK_DBG_LAYER_ACTION_LOG_MSG",
242                            "label": "Log Message",
243                            "description": "Log a txt message to stdout or to a log filename.",
244                            "settings": [
245                                {
246                                    "key": "log_filename",
247                                    "label": "Log Filename",
248                                    "description": "Specifies the output filename",
249                                    "type": "SAVE_FILE",
250                                    "default": "stdout",
251                                    "dependence": {
252                                        "mode": "ALL",
253                                        "settings": [
254                                            {
255                                                "key": "debug_action",
256                                                "value": [
257                                                    "VK_DBG_LAYER_ACTION_LOG_MSG"
258                                                ]
259                                            }
260                                        ]
261                                    }
262                                }
263                            ]
264                        },
265                        {
266                            "key": "VK_DBG_LAYER_ACTION_CALLBACK",
267                            "label": "Callback",
268                            "description": "Call user defined callback function(s) that have been registered via the VK_EXT_debug_report extension. Since application must register callback, this is a NOOP for the settings file.",
269                            "view": "HIDDEN"
270                        },
271                        {
272                            "key": "VK_DBG_LAYER_ACTION_DEBUG_OUTPUT",
273                            "label": "Debug Output",
274                            "description": "Log a txt message using the Windows OutputDebugString function.",
275                            "platforms": [
276                                "WINDOWS"
277                            ]
278                        },
279                        {
280                            "key": "VK_DBG_LAYER_ACTION_BREAK",
281                            "label": "Break",
282                            "description": "Trigger a breakpoint if a debugger is in use."
283                        }
284                    ],
285                    "default": [
286                        "VK_DBG_LAYER_ACTION_LOG_MSG"
287                    ]
288                },
289                {
290                    "key": "report_flags",
291                    "label": "Message Severity",
292                    "description": "Comma-delineated list of options specifying the types of messages to be reported",
293                    "type": "FLAGS",
294                    "flags": [
295                        {
296                            "key": "info",
297                            "label": "Info",
298                            "description": "Report informational messages."
299                        },
300                        {
301                            "key": "warn",
302                            "label": "Warning",
303                            "description": "Report warnings from using the API in a manner which may lead to undefined behavior or to warn the user of common trouble spots. A warning does NOT necessarily signify illegal application behavior."
304                        },
305                        {
306                            "key": "perf",
307                            "label": "Performance",
308                            "description": "Report usage of the API that may cause suboptimal performance."
309                        },
310                        {
311                            "key": "error",
312                            "label": "Error",
313                            "description": "Report errors in API usage."
314                        },
315                        {
316                            "key": "debug",
317                            "label": "Debug",
318                            "description": "For layer development. Report messages for debugging layer behavior.",
319                            "view": "HIDDEN"
320                        }
321                    ],
322                    "default": [
323                        "error"
324                    ]
325                },
326                {
327                    "key": "enable_message_limit",
328                    "label": "Limit Duplicated Messages",
329                    "description": "Enable limiting of duplicate messages.",
330                    "type": "BOOL",
331                    "default": true,
332                    "settings": [
333                        {
334                            "key": "duplicate_message_limit",
335                            "env": "VK_LAYER_DUPLICATE_MESSAGE_LIMIT",
336                            "label": "Max Duplicated Messages",
337                            "description": "Maximum number of times any single validation message should be reported.",
338                            "type": "INT",
339                            "default": 10,
340                            "range": {
341                                "min": 1
342                            },
343                            "dependence": {
344                                "mode": "ALL",
345                                "settings": [
346                                    {
347                                        "key": "enable_message_limit",
348                                        "value": true
349                                    }
350                                ]
351                            }
352                        }
353                    ]
354                },
355                {
356                    "key": "message_id_filter",
357                    "label": "Mute Message VUIDs",
358                    "description": "List of VUIDs and VUID identifers which are to be IGNORED by the validation layer",
359                    "type": "LIST",
360                    "env": "VK_LAYER_MESSAGE_ID_FILTER",
361                    "default": []
362                },
363                {
364                    "key": "disables",
365                    "label": "Disables",
366                    "description": "Specify areas of validation to be disabled",
367                    "type": "FLAGS",
368                    "env": "VK_LAYER_DISABLES",
369                    "flags": [
370                        {
371                            "key": "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT",
372                            "label": "Thread Safety",
373                            "description": "Thread checks. In order to not degrade performance, it might be best to run your program with thread-checking disabled most of the time, enabling it occasionally for a quick sanity check or when debugging difficult application behaviors."
374                        },
375                        {
376                            "key": "VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT",
377                            "label": "Stateless Parameter",
378                            "description": "Stateless parameter checks. This may not always be necessary late in a development cycle."
379                        },
380                        {
381                            "key": "VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT",
382                            "label": "Object Lifetime",
383                            "description": "Object tracking checks. This may not always be necessary late in a development cycle."
384                        },
385                        {
386                            "key": "VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT",
387                            "label": "Core",
388                            "description": "The main, heavy-duty validation checks. This may be valuable early in the development cycle to reduce validation output while correcting parameter/object usage errors."
389                        },
390                        {
391                            "key": "VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT",
392                            "label": "Handle Wrapping",
393                            "description": "Handle wrapping checks. Disable this feature if you are exerience crashes when creating new extensions or developing new Vulkan objects/structures."
394                        },
395                        {
396                            "key": "VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT",
397                            "label": "Shader Validation",
398                            "description": "Shader checks. These checks can be CPU intensive during application start up, especially if Shader Validation Caching is also disabled.",
399                            "view": "ADVANCED"
400                        },
401                        {
402                            "key": "VALIDATION_CHECK_DISABLE_COMMAND_BUFFER_STATE",
403                            "label": "Command Buffer State",
404                            "description": "Check that all Vulkan objects used by a command buffer have not been destroyed. These checks can be CPU intensive for some applications.",
405                            "view": "ADVANCED"
406                        },
407                        {
408                            "key": "VALIDATION_CHECK_DISABLE_IMAGE_LAYOUT_VALIDATION",
409                            "label": "Image Layout",
410                            "description": "Check that the layout of each image subresource is correct whenever it is used by a command buffer. These checks are very CPU intensive for some applications.",
411                            "view": "ADVANCED"
412                        },
413                        {
414                            "key": "VALIDATION_CHECK_DISABLE_QUERY_VALIDATION",
415                            "label": "Query",
416                            "description": "Checks for commands that use VkQueryPool objects.",
417                            "view": "ADVANCED"
418                        },
419                        {
420                            "key": "VALIDATION_CHECK_DISABLE_OBJECT_IN_USE",
421                            "label": "Object in Use",
422                            "description": "Check that Vulkan objects are not in use by a command buffer when they are destroyed.",
423                            "view": "ADVANCED"
424                        },
425                        {
426                            "key": "VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT",
427                            "label": "Shader Validation Caching",
428                            "description": "Disable caching of shader validation results.",
429                            "view": "ADVANCED"
430                        }
431                    ],
432                    "default": [
433                        "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT"
434                    ]
435                },
436                {
437                    "key": "enables",
438                    "label": "Enables",
439                    "description": "Setting an option here will enable specialized areas of validation",
440                    "type": "FLAGS",
441                    "env": "VK_LAYER_ENABLES",
442                    "flags": [
443                        {
444                            "key": "VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT",
445                            "label": "Synchronization",
446                            "description": "This feature reports resource access conflicts due to missing or incorrect synchronization operations between actions (Draw, Copy, Dispatch, Blit) reading or writing the same regions of memory.",
447                            "url": "${LUNARG_SDK}/synchronization_usage.html",
448                            "status": "STABLE",
449                            "platforms": [
450                                "WINDOWS",
451                                "LINUX",
452                                "MACOS",
453                                "ANDROID"
454                            ]
455                        },
456                        {
457                            "key": "VALIDATION_CHECK_ENABLE_SYNCHRONIZATION_VALIDATION_QUEUE_SUBMIT",
458                            "label": "QueueSubmit Synchronization Validation",
459                            "description": "Enable synchronization validation between submitted command buffers when Synchronization Validation is enabled.",
460                            "status": "ALPHA"
461                        },
462                        {
463                            "key": "VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT",
464                            "label": "Debug Printf",
465                            "description": "Enables processing of debug printf instructions in shaders and sending debug strings to the debug callback.",
466                            "url": "${LUNARG_SDK}/debug_printf.html",
467                            "status": "STABLE",
468                            "platforms": [
469                                "WINDOWS",
470                                "LINUX"
471                            ],
472                            "settings": [
473                                {
474                                    "key": "printf_to_stdout",
475                                    "label": "Redirect Printf messages to stdout",
476                                    "description": "Enable redirection of Debug Printf messages from the debug callback to stdout",
477                                    "type": "BOOL",
478                                    "default": true,
479                                    "platforms": [
480                                        "WINDOWS",
481                                        "LINUX"
482                                    ],
483                                    "dependence": {
484                                        "mode": "ANY",
485                                        "settings": [
486                                            {
487                                                "key": "enables",
488                                                "value": [
489                                                    "VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT"
490                                                ]
491                                            }
492                                        ]
493                                    }
494                                },
495                                {
496                                    "key": "printf_verbose",
497                                    "label": "Printf verbose",
498                                    "description": "Set the verbosity of debug printf messages",
499                                    "type": "BOOL",
500                                    "default": false,
501                                    "platforms": [
502                                        "WINDOWS",
503                                        "LINUX"
504                                    ],
505                                    "dependence": {
506                                        "mode": "ANY",
507                                        "settings": [
508                                            {
509                                                "key": "enables",
510                                                "value": [
511                                                    "VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT"
512                                                ]
513                                            }
514                                        ]
515                                    }
516                                },
517                                {
518                                    "key": "printf_buffer_size",
519                                    "label": "Printf buffer size",
520                                    "description": "Set the size in bytes of the buffer used by debug printf",
521                                    "type": "INT",
522                                    "default": 1024,
523                                    "range": {
524                                        "min": 128,
525                                        "max": 1048576
526                                    },
527                                    "unit": "bytes",
528                                    "platforms": [
529                                        "WINDOWS",
530                                        "LINUX"
531                                    ],
532                                    "dependence": {
533                                        "mode": "ANY",
534                                        "settings": [
535                                            {
536                                                "key": "enables",
537                                                "value": [
538                                                    "VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT"
539                                                ]
540                                            }
541                                        ]
542                                    }
543                                }
544                            ]
545                        },
546                        {
547                            "key": "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT",
548                            "label": "GPU-Assisted",
549                            "description": "Check for API usage errors at shader execution time.",
550                            "url": "${LUNARG_SDK}/gpu_validation.html",
551                            "platforms": [
552                                "WINDOWS",
553                                "LINUX"
554                            ],
555                            "settings": [
556                                {
557                                    "key": "gpuav_descriptor_indexing",
558                                    "label": "Check descriptor indexing accesses",
559                                    "description": "Enable descriptor indexing access checking",
560                                    "type": "BOOL",
561                                    "default": true,
562                                    "platforms": [
563                                        "WINDOWS",
564                                        "LINUX"
565                                    ],
566                                    "dependence": {
567                                        "mode": "ANY",
568                                        "settings": [
569                                            {
570                                                "key": "enables",
571                                                "value": [
572                                                    "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT"
573                                                ]
574                                            }
575                                        ]
576                                    }
577                                },
578                                {
579                                    "key": "gpuav_buffer_oob",
580                                    "label": "Check Out of Bounds ",
581                                    "description": "Enable buffer out of bounds checking",
582                                    "type": "BOOL",
583                                    "default": true,
584                                    "platforms": [
585                                        "WINDOWS",
586                                        "LINUX"
587                                    ],
588                                    "dependence": {
589                                        "mode": "ANY",
590                                        "settings": [
591                                            {
592                                                "key": "enables",
593                                                "value": [
594                                                    "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT"
595                                                ]
596                                            }
597                                        ]
598                                    }
599                                },
600                                {
601                                    "key": "validate_draw_indirect",
602                                    "label": "Check Draw Indirect Count Buffers and firstInstance values",
603                                    "description": "Enable draw indirect checking",
604                                    "type": "BOOL",
605                                    "default": true,
606                                    "platforms": [
607                                        "WINDOWS",
608                                        "LINUX"
609                                    ],
610                                    "dependence": {
611                                        "mode": "ANY",
612                                        "settings": [
613                                            {
614                                                "key": "enables",
615                                                "value": [
616                                                    "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT"
617                                                ]
618                                            }
619                                        ]
620                                    }
621                                },
622                                {
623                                    "key": "validate_dispatch_indirect",
624                                    "label": "Check Dispatch Indirect group count values",
625                                    "description": "Enable dispatch indirect checking",
626                                    "type": "BOOL",
627                                    "default": true,
628                                    "platforms": [
629                                        "WINDOWS",
630                                        "LINUX"
631                                    ],
632                                    "dependence": {
633                                        "mode": "ANY",
634                                        "settings": [
635                                            {
636                                                "key": "enables",
637                                                "value": [
638                                                    "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT"
639                                                ]
640                                            }
641                                        ]
642                                    }
643                                },
644                                {
645                                    "key": "vma_linear_output",
646                                    "label": "Use VMA linear memory allocations for GPU-AV output buffers",
647                                    "description": "Use linear allocation algorithm",
648                                    "type": "BOOL",
649                                    "default": true,
650                                    "platforms": [
651                                        "WINDOWS",
652                                        "LINUX"
653                                    ],
654                                    "dependence": {
655                                        "mode": "ANY",
656                                        "settings": [
657                                            {
658                                                "key": "enables",
659                                                "value": [
660                                                    "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT"
661                                                ]
662                                            }
663                                        ]
664                                    }
665                                }
666                            ]
667                        },
668                        {
669                            "key": "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT",
670                            "label": "Reserve Descriptor Set Binding Slot",
671                            "description": "Specifies that the validation layers reserve a descriptor set binding slot for their own use. The layer reports a value for VkPhysicalDeviceLimits::maxBoundDescriptorSets that is one less than the value reported by the device. If the device supports the binding of only one descriptor set, the validation layer does not perform GPU-assisted validation.",
672                            "platforms": [
673                                "WINDOWS",
674                                "LINUX"
675                            ]
676                        },
677                        {
678                            "key": "VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT",
679                            "label": "Best Practices",
680                            "description": "Activating this feature enables the output of warnings related to common misuse of the API, but which are not explicitly prohibited by the specification.",
681                            "url": "${LUNARG_SDK}/best_practices.html",
682                            "platforms": [
683                                "WINDOWS",
684                                "LINUX",
685                                "MACOS",
686                                "ANDROID"
687                            ]
688                        },
689                        {
690                            "key": "VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_ARM",
691                            "label": "ARM-specific best practices",
692                            "description": "Activating this feature enables the output of warnings related to ARM-specific misuse of the API, but which are not explicitly prohibited by the specification.",
693                            "platforms": [
694                                "WINDOWS",
695                                "LINUX",
696                                "MACOS",
697                                "ANDROID"
698                            ]
699                        },
700                        {
701                            "key": "VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_AMD",
702                            "label": "AMD-specific best practices",
703                            "description": "Adds check for spec-conforming but non-ideal code on AMD GPUs.",
704                            "platforms": [
705                                "WINDOWS",
706                                "LINUX",
707                                "MACOS"
708                            ]
709                        },
710                        {
711                            "key": "VALIDATION_CHECK_ENABLE_VENDOR_SPECIFIC_NVIDIA",
712                            "label": "NVIDIA-specific best practices",
713                            "description": "Activating this feature enables the output of warnings related to NVIDIA-specific misuse of the API, but which are not explicitly prohibited by the specification.",
714                            "platforms": [
715                                "WINDOWS",
716                                "LINUX",
717                                "ANDROID"
718                            ]
719                        }
720                    ],
721                    "default": []
722                },
723                {
724                    "key": "fine_grained_locking",
725                    "env": "VK_LAYER_FINE_GRAINED_LOCKING",
726                    "label": "Fine Grained Locking",
727                    "description": "Enable fine grained locking for Core Validation, which should improve performance in multithreaded applications. This setting allows the optimization to be disabled for debugging.",
728                    "status": "STABLE",
729                    "type": "BOOL",
730                    "default": true,
731                    "platforms": [
732                        "WINDOWS",
733                        "LINUX",
734                        "MACOS",
735                        "ANDROID"
736                    ]
737                }
738            ]
739        }
740    }
741}
742