Nico Weber [Thu, 1 Mar 2018 14:55:46 +0000 (09:55 -0500)]
build: Fix -Wmicrosoft-cast warnings with clang-cl
MSVC allows implicit conversion from function pointers to void*.
The C++ standard doesn't allow this, and clang-cl emits a warning
when this is done. This change fixes these warnings in
Vulkan-LoaderAndValidationLayers.
Arguably, loader_platform_get_proc_address() should return a
FARPROC so that the compiler can help checking calling conventions,
but this is the simplest fix that unblocks us.
This is needed for https://crbug.com/550065
Petr Kraus [Tue, 27 Feb 2018 20:20:23 +0000 (21:20 +0100)]
tests: Add tests for vkCmdSetScissor
+ increase coverage of `VkRect2D` tests.
Petr Kraus [Tue, 27 Feb 2018 20:15:55 +0000 (21:15 +0100)]
layers: Rewrite pv_vkCmdSetScissor checks
- tweaks to completeness, correctness and quality of msg logs
- add `multiViewport` related check
- protect against `NULL` ptr `pScissors`
- make overflow check more robust (remove u32->i32 cast)
- correct veid db
Petr Kraus [Tue, 27 Feb 2018 20:00:14 +0000 (21:00 +0100)]
tests: Add missing dyn. multiVieport tests in db
Petr Kraus [Tue, 27 Feb 2018 19:51:20 +0000 (20:51 +0100)]
layers: Conform to gstyle in pv_vkCmdSetVieport
Mark Lobodzinski [Wed, 28 Feb 2018 20:38:45 +0000 (13:38 -0700)]
layers: Make unique_objects ID map global
Increasingly, instance objects are referenced by device-level APIs.
Made unique ID map global, shared across all instances and devices.
Change-Id: I5b62e7b95ec25a2a8b390d46024b43c29f2199ce
Mark Lobodzinski [Thu, 1 Mar 2018 17:25:58 +0000 (10:25 -0700)]
scripts: Mod spec.py to use local validusage.json
This script by default used the latest version of validusage.json from
the web. Changed to use the local copy checked into the repo. Used the
json-file option to fetch from a non-default location, removed the
-json arg and the URL option entirely.
Change-Id: Id088b08c8e66a3cdfca2b9e771797bffe941e5d3
Mark Lobodzinski [Tue, 27 Feb 2018 16:19:15 +0000 (09:19 -0700)]
scripts: Add validusage.json to LVL repo
In the future, this file will be updated as part of the Vulkan
header update process, and will be used as part of managing VUID
identifiers and lifetimes.
Change-Id: I6e29c1148e8752147310649a5ccfd99f385c0f46
Jeremy Kniager [Fri, 19 Jan 2018 17:55:01 +0000 (10:55 -0700)]
layers: Add VU check for VkSwapchainCreateInfoKHR
Added validation check for zero values in
imageExtent of VkSwapchainCreateInfoKHR.
No test included for this VU check as there is
currently no clean method for creating a
VkSurfaceKHR object in
layer_validation_tests.cpp.
Change-Id: I5b04543a837d1f1f7d8c20cec4f446df503a81ce
Jeremy Kniager [Fri, 19 Jan 2018 17:52:34 +0000 (10:52 -0700)]
demos: Fix bug cube.c
Fixed cube.c crashing on Windows when minimized.
Change-Id: Ia4a6578f7da6c1f7a10977b8343099df4c5c69fb
Shannon McPherson [Wed, 28 Feb 2018 17:59:22 +0000 (10:59 -0700)]
demos: Redirect error messages to stderr
Change-Id: Ib704cdc15eb681d1aa1c0a6cde55af5a9bdf3f0e
Tobin Ehlis [Mon, 26 Feb 2018 17:55:57 +0000 (10:55 -0700)]
layers:Merge common loops
Can increment resources for secondary command buffers in the same loop
where image layouts are updated.
Karl Schultz [Tue, 27 Feb 2018 17:47:00 +0000 (10:47 -0700)]
docs: fix markdown lint issues in BUILD.md
Mark Lobodzinski [Wed, 21 Feb 2018 22:31:52 +0000 (15:31 -0700)]
docs: Remove osx-specific func from Linux instrs
Fixed a pre-existing typo in the android instructions for Linux.
Change-Id: I7ceea88d07a69a60fc1afe4b2facf3e03f0da0e5
Mark Lobodzinski [Mon, 19 Feb 2018 23:31:41 +0000 (16:31 -0700)]
docs: Reorg and update BUILD.md
Also changed to one-sentence-per-line markdown style.
Change-Id: I41d6fcb8fa4a07711f19325c350950d5be3e269c
Mark Lobodzinski [Mon, 26 Feb 2018 23:09:11 +0000 (16:09 -0700)]
layers: Removed obsolete (and duplicate) VUIDs
Removed old source, tests, and database entries for checks
09c0012a
and
09c00136 (VUID-VkImageCopy-srcSubresource-00149 and
VUID-VkImageCopy-dstSubresource-00155) which were removed as part
of gitlab issue #812.
Change-Id: I8da71e2dc5b993a442ae1c4f6036266b59069a4f
Mark Lobodzinski [Mon, 26 Feb 2018 23:01:22 +0000 (16:01 -0700)]
layers: Fix a couple of old typos
Change-Id: I05d9c71a21136b790039fce05a2b4d9472537a2a
Mark Lobodzinski [Mon, 26 Feb 2018 22:57:35 +0000 (15:57 -0700)]
layers: Remove buffer image_xfer_granularity checks
These checks are obsolete and have been removed from the spec.
Change-Id: If0c47096029775c53493ba2a5b3d3ee58211f4b3
Jeff Bolz [Wed, 14 Feb 2018 20:26:18 +0000 (14:26 -0600)]
build: Fix line endings in update resources script
Used tr -d to remove line endings for external_revisions files in
update_external_sources.sh script.
Note: Also fixed comment
Change-Id: I9a467d60acc27eeced1f48e46c3bc5624c47ab23
Dave Houlton [Thu, 22 Feb 2018 23:25:16 +0000 (16:25 -0700)]
layers: Record 3D image slice layouts
Fixes a bug in image layout state handling that appeared with
khr_maintenance1. When a 3D image which was created with the
VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR flag is transitioned
between layouts, we now also record a transition for each depth
slice, treating it as an array layer subresource.
The actual fix is just two lines within TransitionImageLayouts().
Also included are some debug-enabling refactoring to distinguish
layout state updates vs additions, and support for new aspect
mask bits.
Change-Id: Ibb5131a6dba8fcdeafe5e6d94af2decf751842ec
Mike Weiblen [Fri, 23 Feb 2018 20:26:08 +0000 (13:26 -0700)]
build: Modify .gitattributes for unix line endings
Shell scripts were forced to a carriage-return line ending -- changed
this to a line feed line ending.
Change-Id: I98b738e4f09ccc622632194586435e5ee6d855eb
Chris Forbes [Fri, 23 Feb 2018 18:16:17 +0000 (10:16 -0800)]
tweak travis config to make it easier to see which profile is failing
Chris Forbes [Fri, 23 Feb 2018 17:11:06 +0000 (09:11 -0800)]
layers: Fix miscounting of descriptors for multiple stages
Descriptors are not intended to count multiple times against the
maxDescriptorSet* limits if they are accessible from multiple stages.
Required adjusting various subtests in CreatePipelineLayout*.
Also fixed some related issues in those tests:
- Input attachments are ONLY accessible to the fragment stage.
- Various assumptions about divisibility of the maxDescriptorSet* limits
There are still many robustness issues in these tests -- it appears we
don't hit them with real implementations, but still wrong.
Chris Forbes [Sat, 17 Feb 2018 00:59:23 +0000 (16:59 -0800)]
layers: Fix validation of shader pipelines when a stage is broken
Present-but-broken stages need to still be considered present for
the purposes of walking `producer` forward. Otherwise a broken GS will
for example cause us to get confused and try to match the VS interface
against the FS.
Bug: #1600, others.
Shannon McPherson [Tue, 20 Feb 2018 02:06:12 +0000 (19:06 -0700)]
demos: Clang format and update const correctness
Change-Id: Ic48d19b6e67c153db0cd86ff6390076d52d3f16f
Shannon McPherson [Thu, 25 Jan 2018 18:10:51 +0000 (11:10 -0700)]
demos: Update/alter console and json output paths
Json is now sent to stdout instead of a file. Html and json output are
now the only two output paths that can exist in the same instance.
Change-Id: I2d28d9b996c11535bf170e7e25b5acd8f57276e1
Shannon McPherson [Mon, 8 Jan 2018 20:33:27 +0000 (13:33 -0700)]
demos: Add Windows functionality
Also, bug fixes.
Change-Id: I6828ea2958cc05342d9ab5a5438c032080bb849d
Shannon McPherson [Wed, 21 Feb 2018 18:00:17 +0000 (11:00 -0700)]
demos: Change post-increment to pre-increment
Change-Id: I2bc7a4d207330892c29fa8053705db0548963c00
Shannon McPherson [Thu, 4 Jan 2018 23:23:31 +0000 (16:23 -0700)]
demos: Add functionality on Linux for single GPU
Vulkaninfo JSON output appears as expected in Linux environment.
Implemented on a system with a single GPU.
Change-Id: I3179b3d479270c71a9f7955b41d19924baf10bfb
Shannon McPherson [Fri, 15 Dec 2017 23:30:46 +0000 (16:30 -0700)]
demos: Implement JSON coverage for more Vk objs
Change-Id: I6584027b83e4d55e2ad99680f7f3645a45285917
Shannon McPherson [Mon, 4 Dec 2017 23:54:20 +0000 (16:54 -0700)]
demos: surfaceCapabilities output; gpu select
User can now specify which GPU they want to save information for
Change-Id: Iac60fc883b32677bc2a59f4b3143aa727e3732cb
Mike Schuchardt [Wed, 21 Feb 2018 16:03:34 +0000 (09:03 -0700)]
scripts: Strip xref markup from vu error messages
Convert asciidoctor xref markup from "<<anchor, text>>" to "text" for VU
error messages. Longer term plan is to modify the upstream validusage
build target in Vulkan-Docs to emit plain text to begin with.
Change-Id: I6ca6ffb4701df27c9c1666598fbeceb0f3a03216
Mark Lobodzinski [Tue, 20 Feb 2018 16:37:55 +0000 (09:37 -0700)]
header: Update to version 1.0.69 of the Vulkan hdr
- updated vulkan.h
- updated vk.xml
- updated layer json files
- updated vulkan.hpp
- updated validation_error_database.txt
- updated vk_validation_error_messages.h
- updated vuid_mapping.py
Note that the VU text in the database file contains artifacts from
the registry/VUID toolchain. These will be addressed in a follow-on
patch set.
Change-Id: I6994ec17a6edcb6c9028c792c68863cd39f1fc56
John Zulauf [Tue, 20 Feb 2018 21:33:18 +0000 (14:33 -0700)]
layers: Convert 2 barrier checks to VUID notation
Converted two validation checks for image and buffer barriers to the
VALIDATION_ERROR_xxxxxxxx / VUID notation and changed unit tests to
also specify desired failure in same form.
VALIDATION_ERROR_0a00095c VUID-VkImageMemoryBarrier-newLayout-01198
VALIDATION_ERROR_0180094a VUID-VkBufferMemoryBarrier-size-01189
Change-Id: I20387bfec89872825f7311e443105aecacb84000
John Zulauf [Tue, 20 Feb 2018 19:19:28 +0000 (12:19 -0700)]
layers: Fix and convert buffer barrier size check
Change buffer barrier size check to compare against the created size of
the buffer, not the memory requirements size, and add VUID info to
validation. Update test to reflect validation changes.
Change-Id: Ib61d6bcd0df449bacd063ece44426ba6196b62e6
John Zulauf [Mon, 19 Feb 2018 23:32:08 +0000 (16:32 -0700)]
layers: A memory binding validation for barriers
Add validation to ensure non-sparse resources are bound to memory before
being referenced in a barrier command.
Change-Id: I007200833d19a96e92ef61a91851c6395b8b9c57
Dave Houlton [Fri, 16 Feb 2018 18:02:26 +0000 (11:02 -0700)]
demos: clang-format only
Apply a whole-file clang-format to LVL demos folder.
Change-Id: I5f7fc8b67e7f3f3eeaa34a2ae757004fb7334743
Mike Weiblen [Tue, 13 Feb 2018 20:56:13 +0000 (13:56 -0700)]
demos: ensure DISPLAY envar is valid
If the DISPLAY environment variable is unset or null, the cube demo will
emit "Cannot find a compatible Vulkan installable client driver (ICD)."
That message is not helpful when attempting to resolve the issue, since
the problem is with the envar, not the ICD.
Change-Id: Idf145cf0da906a4a8352b5bb136f88d9c1bca90d
Mark Lobodzinski [Fri, 16 Feb 2018 18:24:21 +0000 (11:24 -0700)]
layers: Handle multiple GetSwapchainImages calls
Unique Objects was fixed to prevent uniquifying duplicate image objects
for multiple GetSwapchainImageKHR calls.
Change-Id: I14bc3d8145a37b74adcdef68970b3dffc539d511
Mark Lobodzinski [Fri, 16 Feb 2018 16:58:07 +0000 (09:58 -0700)]
layers: Move U_O:DestroySwapchain out of codegen
This function in the unique_objects layer will need to clean up some
swapchain image index tracking information and so will now be
manually written.
Change-Id: I306fdd9f7a3c75c21b82fe21951804bd86259781
John Zulauf [Mon, 19 Feb 2018 17:09:35 +0000 (10:09 -0700)]
layers: Fix linux compilation errors of isnan
Added std:: to isnan invocation.
Change-Id: I1353c4116497a88625a12e4003121716ec66a4f0
Petr Kraus [Tue, 9 Jan 2018 23:19:16 +0000 (00:19 +0100)]
tests: Implement VkViewport tests
Petr Kraus [Tue, 9 Jan 2018 21:09:51 +0000 (22:09 +0100)]
tests: Add dynamic multiViewport test
Petr Kraus [Tue, 9 Jan 2018 21:09:42 +0000 (22:09 +0100)]
tests: Implement vkCmdSetViewport tests
Petr Kraus [Tue, 9 Jan 2018 21:09:25 +0000 (22:09 +0100)]
layers: Reimplement vkCmdSetViewport param val.
Petr Kraus [Tue, 9 Jan 2018 21:09:09 +0000 (22:09 +0100)]
layers: Implement `VkViewport` parameter_validation
Cody Northrop [Fri, 16 Feb 2018 14:45:27 +0000 (07:45 -0700)]
android: Update shaderc known-good
20180216
Dave Houlton [Wed, 7 Feb 2018 17:51:23 +0000 (10:51 -0700)]
layers: clang-format only
Whole-file clang-format of layers .h and .cpp files
Change-Id: I683ad38fa9bced371a923b86d8cc916f2c2aa947
Dave Houlton [Wed, 7 Feb 2018 00:49:16 +0000 (17:49 -0700)]
tests: clang-format only
No code changes, just full clang-format.
Change-Id: I096d1b5509897bd642545e3369ccd83ca2849441
Norbert Garnys [Tue, 13 Feb 2018 15:32:03 +0000 (16:32 +0100)]
loader: Don't add duplicate JSON files from Khronos registry path.
To make sure we avoid enumerating old JSON files/drivers that might be present
in the non-device specific area of the registry when a newer device specific
JSON file is present, do a check before adding.
Find the file name, without path, of the JSON file found in the non-device
specific registry location. If the same JSON file name is already found in
the list, don't add it again.
Tobin Ehlis [Thu, 8 Feb 2018 21:10:35 +0000 (14:10 -0700)]
layers:Verify sparse image metadata is bound
Any image for which sparse memory requirements are bound, flag if that
image requires metadata. When binding sparse memory, for any image that
requires metadata and no metadata was bound, issue a warning.
Tobin Ehlis [Thu, 8 Feb 2018 20:30:56 +0000 (13:30 -0700)]
layers:Add sparse mem warning if reqs not checked
If vkQueueBindSparse() is called to bind sparse memory to an image,
trigger a warning if the user has not queried sparse requirements for
that image.
Tobin Ehlis [Thu, 8 Feb 2018 18:19:10 +0000 (11:19 -0700)]
layers:Track sparse image requirements
Add image state tracking for if sparse memory requirements have been
queried and when they are queried, save the requirements.
Tobin Ehlis [Thu, 8 Feb 2018 15:59:22 +0000 (08:59 -0700)]
layers:Adding intercepts for sparse binding
Intercept vkGetImageSparseMemoryRequirements() and
vkGetPhysicalDeviceSparseImageFormatProperties() functions and their
2KHR equivalents in core_validation in preparation for adding sparse
checks. Initially just pass-through intercepts.
Jeremy Kniager [Thu, 25 Jan 2018 18:41:20 +0000 (11:41 -0700)]
layers: fix unexpected errors in layer tests
Adjusted to not conflict with PR #2387
Change-Id: I7afc90577cb269070beda4f33bb04ab2a2c28f40
Tobin Ehlis [Tue, 13 Feb 2018 16:35:47 +0000 (09:35 -0700)]
layers:Fix spelling truely->truly
Lenny Komow [Tue, 13 Feb 2018 17:30:02 +0000 (10:30 -0700)]
loader: Fix loader skipping layer files
Fix a bug where having a json file in the layer path that isn't a
valid layer would cause the other valid layers to be skipped
Change-Id: I8346bd223358f271a48799d249d3b3a941dd31f8
Tobin Ehlis [Tue, 13 Feb 2018 14:41:17 +0000 (07:41 -0700)]
layers:Fix typo databate->database
Tobin Ehlis [Tue, 13 Feb 2018 14:36:54 +0000 (07:36 -0700)]
layers:Remove TODO comments
After discussion in Khronos, explicit VUIDs for these descriptor set
lifetime cases are not going to be added to the spec. There are no
similar VUs for related object lifetime cases so will continue using
the existing VUIDs for valid descriptor set handles which is a
reasonable compromise.
Slawomir Cygan [Thu, 25 Jan 2018 12:51:17 +0000 (13:51 +0100)]
loader: link with OneCore umbrella library
This change makes loader use OneCore umbrella[2] library, common
to all Windows 10 devices and required with for Universal
Windows drivers[1].
As this change may not be compatible with previous versions of
Windows, it's enabled via CMAKE option:
-DENABLE_WIN10_ONECORE=1
[2] https://msdn.microsoft.com/en-us/library/windows/desktop/mt654039(v=vs.85).aspx
[1] https://docs.microsoft.com/en-us/windows-hardware/drivers/develop/getting-started-with-universal-drivers
Change-Id: Ib677face131ab2edb3e8cd2f764fe4e0ca44cecc
Slawomir Cygan [Thu, 25 Jan 2018 12:48:54 +0000 (13:48 +0100)]
loader: use Unicode functions from cfgmgr32.lib
This change improves loader compatibility with Universal
Windows drivers[1]: do not use removed ANSI-based functions,
use Unicode equivalentsexposed in umbrella[2] library.
[1] https://docs.microsoft.com/en-us/windows-hardware/drivers/develop/getting-started-with-universal-drivers
[2] https://msdn.microsoft.com/en-us/library/windows/desktop/mt654039(v=vs.85).aspx
Change-Id: I8ead9c46815d15e1b2f2226eb30110c8efa4ec75
Slawomir Cygan [Wed, 24 Jan 2018 14:34:15 +0000 (15:34 +0100)]
loader: remove references to shlwapi.lib
This change improves loader compatibility with Universal
Windows drivers[1]: shlwapi.lib is not a part of allowed APIs.
It seems PathFileExists call was already redundant as
ERROR_MOD_NOT_FOUND was already returned by the loader in
cse of wrong dll path.
PathIsRelative is replaced by equivalent check.
[1] https://docs.microsoft.com/en-us/windows-hardware/drivers/develop/getting-started-with-universal-drivers
Change-Id: I36854f38078670ac033e8bd415dbf368391e8448
Lenny Komow [Thu, 8 Feb 2018 17:55:26 +0000 (10:55 -0700)]
winsdk: Update runtime installer copyright to 2018
Change-Id: If27613c85c754d4a54f5afa4dd3a6976695b227e
Mark Lobodzinski [Wed, 7 Feb 2018 23:33:33 +0000 (16:33 -0700)]
build: Add min supported compiler versions to BUILD.md
Change-Id: I694aaf18e3f4f1d458fa2a4f84f84c4553e93a0a
Mark Lobodzinski [Wed, 7 Feb 2018 17:00:22 +0000 (10:00 -0700)]
layers: Avoid warnings in vk_layer_logging.h
This file was often included in files where only a subset of the
functions were called, resulting in -Wunused_function warnings from
GCC. Made these functions inline to avoid the warnings.
Change-Id: Iaa3765ee51a290f0dd82d1a6a91116b6e1eec2c1
Petr Kraus [Tue, 6 Feb 2018 03:33:38 +0000 (04:33 +0100)]
demos: Let vulkaninfo accept empty DISPLAY variable
Cody Northrop [Tue, 6 Feb 2018 22:12:36 +0000 (15:12 -0700)]
android: Update to shaderc known-good revisions
Mark Lobodzinski [Tue, 6 Feb 2018 17:05:06 +0000 (10:05 -0700)]
external: Update glslang commit ID, fix LVT
Updated glslang revision to TOT, fixed layer validation test for
new spirv-validator message output.
Change-Id: I8c31d6cfc09cf73f4235b2159e3fe4e6ec289330
Karl Schultz [Tue, 6 Feb 2018 13:12:35 +0000 (06:12 -0700)]
build: Adjust travis config for VT updates
- VT update external script no longer accepts jsoncpp flag
so remove call to build it. The script now builds it all the time.
- Add back cmake flag to turn off LVL layers build. LVL should
now build the layer utils even with layer build disabled. VT
needs the layer utils to build devsim.
Change-Id: I1c5421d4b5553b3d39f68f075ee5850588696775
Dave Houlton [Fri, 2 Feb 2018 23:32:41 +0000 (16:32 -0700)]
clang-format whitespace (sigh)
Change-Id: I52d956163900465e434f68aa185618a2469f243f
Dave Houlton [Wed, 31 Jan 2018 20:01:42 +0000 (13:01 -0700)]
tests: Add test for new CreateImage VUs
Add ImageCreateInfoStructErrors positive test, provokes new
ImageCreateInfo struct VU errors.
Change-Id: Ia7b2b955ded6b4851d936758047eeb7462e630cc
Dave Houlton [Tue, 30 Jan 2018 22:03:43 +0000 (15:03 -0700)]
tests: Fix existing tests that hit new VUs
Fix existing tests that were inadvertently triggering the
newly added valid usage checks.
Change-Id: I0a6baa4df36c2316070e73f8959d55b4ca6a30f8
Dave Houlton [Mon, 29 Jan 2018 20:39:56 +0000 (13:39 -0700)]
layers: Add CreateImage valid usage checks
Adds 17 valid usage checks of ImageCreateInfo struct. 13 in core
validation, 4 in parameter validation.
Change-Id: I4bfe195f88d5e14237c1b01c5aca2de7c578aa67
Mark Lobodzinski [Fri, 2 Feb 2018 20:58:41 +0000 (13:58 -0700)]
build: Move layer_utils build to top-level cmake
DevSim requires this library, but it is only built in LVL if LAYERS
are built. Moved the generation of this library out of the layers
cmake file and into the root cmake file.
Change-Id: I1c633e981fa1843cfb49204d2ac130beb8d99dfc
Mark Lobodzinski [Fri, 2 Feb 2018 18:40:50 +0000 (11:40 -0700)]
icd: Remove dead code from CMakeLists.txt
Change-Id: I6b60b2e71568a3a88a3366b04ab7cf911fa05526
Cody Northrop [Mon, 5 Feb 2018 19:03:10 +0000 (12:03 -0700)]
scripts: Update android-generate to support UUID
This allows use of the script as is, automatically
selecting git_dir vs. rev_file based on detected paths.
Cort Stratton [Fri, 2 Feb 2018 07:25:21 +0000 (23:25 -0800)]
scripts: Fix error if spirv-tools dir had no .git (#2346)
external_revision_generator.py generates a UUID for
VkValidationCacheEXT objects created by the layers, based on
the commit ID of the HEAD revision in the spirv-tools repo
used to build those layers. This implicitly required that
the spirv-tools source is hosted in a Git repository, which
is not the case in all validation layers build environments.
The script has been modified to accept *either* a path to
a Git working directory to query *or* a path to a file whose
contents are SHA1-hashed (if necessary) and treated as the
"commit ID" for the project.
Call sites for the script in the CMake and Android build paths
have been updated to use the --git_dir approach by default,
which matches the pre-existing behavior.
Cort Stratton [Fri, 2 Feb 2018 07:14:50 +0000 (23:14 -0800)]
layers: Improve validation cache ID parsing
- Code previously assumed that SPIRV_TOOLS_COMMIT_ID was a SHA1 hash;
this assumption is now more explicit.
- Replace some literal constants with VK_UUID_SIZE.
- Handle the purely hypothetical case where VK_UUID_SIZE*2 > SHA1 size
John Zulauf [Tue, 30 Jan 2018 22:04:56 +0000 (15:04 -0700)]
layers: Add err-id/coverage for 'recording state'
Added map from CMD_TYPE to validation error for "must be in the
recording state" valid usage ID. Add complete check coverage
(except vendor/KHX extensions) for this class of VUID. Coverted
existing checks to use common code.
Change-Id: I38f71cce2a0f090f2685074239a1b429bbf95d8c
John Zulauf [Tue, 30 Jan 2018 16:24:38 +0000 (09:24 -0700)]
layers: Fully normalize/populate CMD_TYPE enum
Add all vkCmd.* (plus vkEndCommandBuffer) to the CMD_TYPE, normalizing
the naming to be consistent with the function names.
Change-Id: I50503a4e180d726b330c42db050a1336221213f6
Mark Lobodzinski [Thu, 1 Feb 2018 16:27:03 +0000 (09:27 -0700)]
cmake: Move LVL temp/worker targets into subfolder
This sets up cmake to locate the temporary or worker MSVC projects
into a subfolder called lvl_cmake_targets. This simply unclutters
the Visual Studio Solution Explorer projects pane, and does not
affect functionality.
Change-Id: I6933d05758d6f174a4f66ceaef51d43627210e4f
Karl Schultz [Thu, 1 Feb 2018 21:31:01 +0000 (14:31 -0700)]
build: Need to build LVL layers in CI to get utils
Layer utils now exist only in LVL, so when we build VulkanTools
in LVL CI (just to get devsim layer), we need to turn on LVL
layer building in order to get the layer util libs.
Change-Id: I4cc6df4ed0a782afeec19c61dc05bcc2bad47756
Mark Lobodzinski [Thu, 1 Feb 2018 19:14:30 +0000 (12:14 -0700)]
layers: Add LAYER_EXPORT specifiers to vk_layer_config
Required for hassle-free linking to layer_utils lib.
Mark Lobodzinski [Tue, 30 Jan 2018 23:09:08 +0000 (16:09 -0700)]
demos: Fix output location of smoketest
Mike Schuchardt [Thu, 25 Jan 2018 20:44:17 +0000 (13:44 -0700)]
layers: Pass through bind mem 2 entry point names
Change-Id: I62510d1759c7cd3ca81b3c7e57a153b7c863250b
Mike Schuchardt [Fri, 19 Jan 2018 00:59:06 +0000 (17:59 -0700)]
layers: Bind mem 2 entry points
Add entry points for VK_KHR_bind_memory2 and wire up to existing
validation
Change-Id: Iab17ead7a6f6f44fdbdf2ad5033d2ea7e47447d0
Mike Schuchardt [Wed, 10 Jan 2018 22:11:06 +0000 (15:11 -0700)]
layers: Mem reqs 2 entry points
Add entry points for VK_KHR_get_memory_requirements2 and wire up to
existing validation.
Change-Id: I3f9170b0171efc5a22ddb1e3b68185cedd17bca5
John Zulauf [Fri, 26 Jan 2018 18:46:12 +0000 (11:46 -0700)]
tests: Add unit test for push descriptor set VUIDs
Add the unit test case for the following added checks.
VALIDATION_ERROR_1be02415
VALIDATION_ERROR_1be002d6
VALIDATION_ERROR_1be002da
VALIDATION_ERROR_1be002d8
VUID-vkCmdPushDescriptorSetKHR-commandBuffer-recording
Change-Id: Ib9aa008ab87dddead3eb086d5c8ed3fb94f5f187
John Zulauf [Fri, 26 Jan 2018 18:23:10 +0000 (11:23 -0700)]
layers: Add CmdPushDescriptorSet parameter checks
Added the stateful parameter checks for push descriptor.
VALIDATION_ERROR_1be02415
VUID-vkCmdPushDescriptorSetKHR-commandBuffer-cmdpool
The VkCommandPool that commandBuffer was allocated from must support graphics, or compute operations
VALIDATION_ERROR_1be002d6
VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-00363
pipelineBindPoint must be supported by the commandBuffer's parent VkCommandPool's queue family
VALIDATION_ERROR_1be002da
VUID-vkCmdPushDescriptorSetKHR-set-00365
set must be the unique set number in the pipeline layout that uses a descriptor set layout that was created with VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
VALIDATION_ERROR_1be002d8
VUID-vkCmdPushDescriptorSetKHR-set-00364
set must be less than VkPipelineLayoutCreateInfo::setLayoutCount provided when layout was created
// Not implemented using VUID as ValidateCmd currently doesn't support (TODO)
VUID-vkCmdPushDescriptorSetKHR-commandBuffer-recording
commandBuffer must be in the recording state
Change-Id: I52f39780003e23953dd2dc46ec007e884c04fa5b
John Zulauf [Fri, 26 Jan 2018 20:42:08 +0000 (13:42 -0700)]
layers: Improve doc validation init-list parsing
Change VALIDATION_ERROR_ parsing to correctly recognize error ids in
initializer lists, including the formatting as done by clang-format.
{VALIDATION_ERRROR_nnnn, ... VALIDATION_ERROR_nnnn}
Change-Id: I25a1c0d0c9181ece458f7c83d2f184abea8d1f4a
John Zulauf [Wed, 24 Jan 2018 18:56:18 +0000 (11:56 -0700)]
tests: Add test for push descriptor allocation
Add unit test case for attempting to use vkAllocateDescriptorSets with a
descriptor set layout created with the push descriptor flag
VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR set.
Test cases added:
VALIDATION_ERROR_04c00268
VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308
Change-Id: If11e12a3dd51f4c796178b89d8e9077a5227407c
John Zulauf [Wed, 24 Jan 2018 18:54:05 +0000 (11:54 -0700)]
layers: Add check for push descriptor allocation
Add validation check for attempting to use vkAllocateDescriptorSets with
a descriptor set layout create with the push descriptor flag
VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR set.
Checks added:
VALIDATION_ERROR_04c00268
VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308
Change-Id: I81bed8e7eb5396f7a716b6a14b648b5051127259
John Zulauf [Tue, 23 Jan 2018 18:57:46 +0000 (11:57 -0700)]
tests: Add tests for push DS layout create VUIDs
Added tests for additional valid usage checks:
VALIDATION_ERROR_05000230 VkDescriptorSetLayoutCreateInfo-flags-00280
VALIDATION_ERROR_05000232 VkDescriptorSetLayoutCreateInfo-flags-00281
Added test for "required extension" present check for creation of DS
layout with push descriptors flag set.
Change-Id: Ia274d9ce3ee38ec686e52c4101a6d0573294f852
John Zulauf [Tue, 23 Jan 2018 18:27:35 +0000 (11:27 -0700)]
layers: Add push descriptor set layout create VUID
Add VUID checks to vkCreateDescriptorSetLayout for push descriptor sets.
Additional checks include:
VALIDATION_ERROR_05000230 VkDescriptorSetLayoutCreateInfo-flags-00280
VALIDATION_ERROR_05000232 VkDescriptorSetLayoutCreateInfo-flags-00281
Also added check for use of
VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR when the
required extension VK_KHR_push_descriptor is not enabled.
Updated CreateDescriptorSetBindingWithIgnoredSamplers test, which
violated the above check.
Change-Id: Ie009019bbb7859553df92473796a1a929a9464f7
John Zulauf [Tue, 23 Jan 2018 23:30:00 +0000 (16:30 -0700)]
icd: Add VK_KHR_push_descriptor to blacklist
As VK_KHR_get_physical_device_properties2 pNext structure queries are
not implemented within mock_icd,
VkPhysicalDevicePushDescriptorPropertiesKHR::maxPushDescriptors cannot
be queried by the validation layers, causing numerous test failures when
this limit is checked (in a subsequen commit). Added to ignore until
such time it is correctly reported.
Change-Id: I77b9a37c9ab2ce3e730b7fa6596e23ccc2be8d8c
John Zulauf [Tue, 23 Jan 2018 18:20:50 +0000 (11:20 -0700)]
layer: Add utility template for sType init
Add utility function to auto populate sType field based on typename
given to autogen of typemap helper. Return value optimization (copy
elision) should make this perfomance neutral vs. inline init.
Change-Id: I231cf92d5063c19f9ad5b14189dd162fdac76a43
Chris Forbes [Wed, 24 Jan 2018 18:53:21 +0000 (10:53 -0800)]
Don't complain about unused vertex buffers being VK_NULL_HANDLE
Mark Lobodzinski [Wed, 24 Jan 2018 00:54:26 +0000 (17:54 -0700)]
demos: Update cube/smoke for submodule compatibility
Mark Lobodzinski [Tue, 23 Jan 2018 22:56:01 +0000 (15:56 -0700)]
cmake: Fix glslang validator cmake hint path
Change-Id: I098b4ce4dcb924bcc1fc15da50332118a0756a43
John Zulauf [Tue, 16 Jan 2018 18:48:49 +0000 (11:48 -0700)]
tests: Add barrier queue family index tests
Add validation layer tests for Buffer and Image memory barriers.
VUIDs test refactored(*)/new:
VALIDATION_ERROR_0a000960* VUID-VkImageMemoryBarrier-image-01200
VALIDATION_ERROR_0a000962 VUID-VkImageMemoryBarrier-image-01201
VALIDATION_ERROR_0a00096a VUID-VkImageMemoryBarrier-image-01205
VALIDATION_ERROR_0a000dce VUID-VkImageMemoryBarrier-image-01767
VALIDATION_ERROR_0a000dd0 VUID-VkImageMemoryBarrier-image-01768
VALIDATION_ERROR_0a00095e VUID-VkImageMemoryBarrier-image-01199
VALIDATION_ERROR_0a000aca VUID-VkImageMemoryBarrier-image-01381
VALIDATION_ERROR_0a000dcc VUID-VkImageMemoryBarrier-image-01766
VALIDATION_ERROR_0180094e VUID-VkBufferMemoryBarrier-buffer-01191
VALIDATION_ERROR_01800dc6 VUID-VkBufferMemoryBarrier-buffer-01763
VALIDATION_ERROR_01800952 VUID-VkBufferMemoryBarrier-buffer-01193
VALIDATION_ERROR_01800dca VUID-VkBufferMemoryBarrier-buffer-01765
VALIDATION_ERROR_01800dc8 VUID-VkBufferMemoryBarrier-buffer-01764
VALIDATION_ERROR_0180094c VUID-VkBufferMemoryBarrier-buffer-01190
VALIDATION_ERROR_01800950 VUID-VkBufferMemoryBarrier-buffer-01192
VALIDATION_ERROR_01800958 VUID-VkBufferMemoryBarrier-buffer-01196
Change-Id: Icf5d7f1ddbeeab90324cfb034648813741a65398