diff options
| author | Mark Lobodzinski <mark@lunarg.com> | 2016-02-29 11:49:51 -0700 |
|---|---|---|
| committer | Mark Lobodzinski <mark@lunarg.com> | 2016-02-29 11:53:29 -0700 |
| commit | 36783fc463a206357d52d688cbae6b9054b56c3a (patch) | |
| tree | f355cf373f1047ebaa146518c99c8a8c824bab7c | |
| parent | 5faa4540a1dda99d67ade15ee2b66186c48ff627 (diff) | |
| download | usermoji-36783fc463a206357d52d688cbae6b9054b56c3a.tar.xz | |
layers: GH LVL#49, Updated layer docs/README for new layers
| -rw-r--r-- | layers/README.md | 10 | ||||
| -rw-r--r-- | layers/vk_validation_layer_details.md | 15 |
2 files changed, 22 insertions, 3 deletions
diff --git a/layers/README.md b/layers/README.md index e13a8491..be5628d8 100644 --- a/layers/README.md +++ b/layers/README.md @@ -33,6 +33,9 @@ Note that some layers are code-generated and will therefore exist in the directo ### Layer Details For complete details of current validation layers, including all of the validation checks that they perform, please refer to the document layers/vk_validation_layer_details.md. Below is a brief overview of each layer. +### Standard Validation +This is a meta-layer managed by the loader. (name = VK_LAYER_LUNARG_standard_validation) - specifying this layer name will cause the loader to load the all of the standard validation layers (listed below) in the following optimal order: VK_LAYER_GOOGLE_threading, VK_LAYER_LUNARG_param_checker, VK_LAYER_LUNARG_device_limits, VK_LAYER_LUNARG_object_tracker, VK_LAYER_LUNARG_image, VK_LAYER_LUNARG_mem_tracker, VK_LAYER_LUNARG_draw_state, VK_LAYER_LUNARG_swapchain, and VK_LAYER_GOOGLE_unique_objects. Other layers can be specified and the loader will remove duplicates. + ### Print Object Stats (build dir)/layers/object_tracker.cpp (name=VK_LAYER_LUNARG_object_tracker) - Track object creation, use, and destruction. As objects are created, they're stored in a map. As objects are used, the layer verifies they exist in the map, flagging errors for unknown objects. As objects are destroyed, they're removed from the map. At vkDestroyDevice() and vkDestroyInstance() times, if any objects have not been destroyed, they are reported as leaked objects. If a Dbg callback function is registered, this layer will use callback function(s) for reporting, otherwise uses stdout. @@ -49,14 +52,17 @@ layers/param_checker.cpp (name=VK_LAYER_LUNARG_param_checker) - Check the input layers/image.cpp (name=VK_LAYER_LUNARG_image) - The image layer is intended to validate image parameters, formats, and correct use. Images are a significant enough area that they were given a separate layer. If a Dbg callback function is registered, this layer will use callback function(s) for reporting, otherwise uses stdout. ### Check threading -<build dir>/layers/threading.cpp (name=VK_LAYER_GOOGLE_threading) - Check multithreading of API calls for validity. Currently this checks that only one thread at a time uses an object in free-threaded API calls. If a Dbg callback function is registered, this layer will use callback function(s) for reporting, otherwise uses stdout. +layers/threading.cpp (name=VK_LAYER_GOOGLE_threading) - Check multithreading of API calls for validity. Currently this checks that only one thread at a time uses an object in free-threaded API calls. If a Dbg callback function is registered, this layer will use callback function(s) for reporting, otherwise uses stdout. ### Swapchain -<build dir>/layer/swapchain.cpp (name=VK_LAYER_LUNARG_swapchain) - Check that WSI extensions are being used correctly. +layers/swapchain.cpp (name=VK_LAYER_LUNARG_swapchain) - Check that WSI extensions are being used correctly. ### Device Limitations layers/device_limits.cpp (name=VK_LAYER_LUNARG_device_limits) - This layer is intended to capture underlying device features and limitations and then flag errors if an app makes requests for unsupported features or exceeding limitations. This layer is a work in progress and currently only flags some high-level errors without flagging errors on specific feature and limitation. If a Dbg callback function is registered, this layer will use callback function(s) for reporting, otherwise uses stdout. +### Unique Objects +(build dir)/layers/unique_objects.cpp (name=VK_LAYER_GOOGLE_unique_objects) - The Vulkan specification allows objects that have non-unique handles. This makes tracking object lifetimes difficult in that it is unclear which object is being referenced on deletion. The unique_objects layer was created to address this problem. If loaded in the correct position (last, which is closest to the display driver) it will wrap all objects with a unique object representation, allowing proper object lifetime tracking. This layer does no validation on its own, and may not be required for the proper operation of all layers or all platforms. One sign that it is needed is the appearance of errors emitted from the object_tracker layer indicating the use of previously destroyed objects. + ## Using Layers 1. Build VK loader using normal steps (cmake and make) diff --git a/layers/vk_validation_layer_details.md b/layers/vk_validation_layer_details.md index 3059b5ab..db2d8e1b 100644 --- a/layers/vk_validation_layer_details.md +++ b/layers/vk_validation_layer_details.md @@ -2,6 +2,12 @@ # Validation Layer Details +## VK_LAYER_LUNARG_standard_validation + +### VK_LAYER_LUNARG_standard_validation Overview + +This is a meta-layer managed by the loader. Specifying this layer name will cause the loader to load the all of the standard validation layers in the following optimal order: VK_LAYER_GOOGLE_threading, VK_LAYER_LUNARG_param_checker, VK_LAYER_LUNARG_device_limits, VK_LAYER_LUNA RG_object_tracker, VK_LAYER_LUNARG_image, VK_LAYER_LUNARG_mem_tracker, VK_LAYER_LUNARG_draw_state, VK_LAYER_LUNARG_swapchain, and VK_LAYER_GOOGLE_unique_objects. Other layers can be specified and the loader will remove duplicates. See the following individual layer descriptions for layer details. + ## VK_LAYER_LUNARG_draw_state ### VK_LAYER_LUNARG_draw_state Overview @@ -399,7 +405,7 @@ Note: The following platform-specific functions are not mentioned above, because - vkGetPhysicalDeviceWin32PresentationSupportKHR - vkCreateXcbSurfaceKHR - vkGetPhysicalDeviceXcbPresentationSupportKHR -- vkCreateXlibSurfaceKHR +- vkCreateXlibSurfaceKHR - vkGetPhysicalDeviceXlibPresentationSupportKHR ### VK_LAYER_LUNARG_Swapchain Pending Work @@ -409,6 +415,13 @@ Additional checks to be added to VK_LAYER_LUNARG_swapchain 2. One issue that has already come up is correct UsageFlags for WSI SwapChains and SurfaceProperties. 3. Tons of other stuff including semaphore and synchronization validation. +## VK_LAYER_GOOGLE_unique_objects + +### VK_LAYER_GOOGLE_unique_objects Overview + +The unique_objects is not a validation layer but a helper layer that assists with validation. The Vulkan specification allows objects that have non-unique handles. This makes tracking object lifetimes difficult in that it is unclear which object is being referenced upon deletion. The unique_objects layer addresses this by wrapping all objects with a unique object representation allowing proper object lifetime tracking. This layer does no validation on its own and may not be required for the proper operation of all layers or all platforms. One sign that it is needed is the appearance of many errors from the object_tracker layer indicating the use of previously destroyed objects. For optimal effectiveness this layer should be loaded last (to reside in the layer chain closest to the display driver and farthest from the application). + + ## General Pending Work A place to capture general validation work to be done. This includes new checks that don't clearly fit into the above layers. |
