platform/upstream/Vulkan-Tools.git
7 years agolayers: Make comments consistent across file
Mark Lobodzinski [Tue, 27 Dec 2016 23:42:06 +0000 (16:42 -0700)]
layers: Make comments consistent across file

Change-Id: I1a92a25ae113142fd8293a1e30d6c0afff2cb759

7 years agolayers: Remove inconsistent comment specifiers
Mark Lobodzinski [Tue, 27 Dec 2016 23:23:59 +0000 (16:23 -0700)]
layers: Remove inconsistent comment specifiers

Change-Id: I6909e27ee88b5362801bc88953746d827e3f05db

7 years agolayers: Make comments consistent
Mark Lobodzinski [Tue, 27 Dec 2016 23:22:38 +0000 (16:22 -0700)]
layers: Make comments consistent

Change-Id: I07a249f02956e2cda57548a62f8993631d2b334a

7 years agoscripts: Remove unused code from vk_helper.py
Mark Lobodzinski [Wed, 21 Dec 2016 22:50:01 +0000 (15:50 -0700)]
scripts: Remove unused code from vk_helper.py

Mostly the string_struct_helper related stuff, but also some
additional orphaned remnants.

Change-Id: Ibdd124d10351c694b02917c81e97c56dc9645e6b

7 years agolayers: Update 'string' layer header files
Mark Lobodzinski [Wed, 21 Dec 2016 22:22:39 +0000 (15:22 -0700)]
layers: Update 'string' layer header files

Remove struct_string_helper header files, add in enum_string_helper
and <sstream> as these were included in the removed header file.

Change-Id: Ice0842ce2f06b5581a5add739534d59d834edbf6

7 years agolayers: Remove struct string helper from cmake
Mark Lobodzinski [Wed, 21 Dec 2016 18:32:24 +0000 (11:32 -0700)]
layers: Remove struct string helper from cmake

Change-Id: I0c1ede8bb65d8926bbb3d83d5d320d2a72639781

7 years agoloader: EnumPhysDev fixes
Mark Young [Fri, 23 Dec 2016 23:59:58 +0000 (16:59 -0700)]
loader: EnumPhysDev fixes

Found a few issues, and I had some concerns about the physical
device values enduring over multiple queries.

Change-Id: Ifaa94a4ecf9edfc79bdd3b3d473db068952e3264

7 years agolayers:Fix CmdDispatch post-call function
Tobin Ehlis [Tue, 27 Dec 2016 14:32:56 +0000 (07:32 -0700)]
layers:Fix CmdDispatch post-call function

Cut-and-paste bug was incorrectly calling CmdDraw post-call function
instead of CmdDispatch.

7 years agolayers:Fix unique id for CmdDispatch
Tobin Ehlis [Tue, 27 Dec 2016 14:27:06 +0000 (07:27 -0700)]
layers:Fix unique id for CmdDispatch

7 years agoscripts:Add more duplicate error enum exceptions
Tobin Ehlis [Thu, 22 Dec 2016 21:31:01 +0000 (14:31 -0700)]
scripts:Add more duplicate error enum exceptions

Allow various other unique error enums to be used multiple times.
Addressing these on a case-by-case basis and documenting the exceptions
in the script.

7 years agoscripts:Add duplicate id exception
Tobin Ehlis [Thu, 22 Dec 2016 21:10:21 +0000 (14:10 -0700)]
scripts:Add duplicate id exception

Add duplicate exception for VALIDATION_ERROR_00648 which is for
VkMappedMemoryRange struct to have valid memory objects. That struct
is used by both Flush & Invalidate MappedMemoryRange.

7 years agoscripts:Allow duplicate exceptions for some ids
Tobin Ehlis [Thu, 22 Dec 2016 20:59:42 +0000 (13:59 -0700)]
scripts:Allow duplicate exceptions for some ids

Added global duplicate_exceptions list at the top of the script that
is used to store any IDs that are allowed to be used multiple times
in the source. An explanation comment of all exceptions should be
included.

Initial exception included in list is VALIDATION_ERROR_00942 which is
a descriptor set update error to make sure a valid sampler is included
for relevant write updates. This is re-used for two copy updates that
may have invalid samplers.

7 years agolayers:Remove redundant check
Tobin Ehlis [Thu, 22 Dec 2016 20:40:45 +0000 (13:40 -0700)]
layers:Remove redundant check

Remove valid buffer check from descriptor_sets.cpp that's already
handled in object_tracker.

7 years agolayer:Add unique error ids for memory binding
Tobin Ehlis [Thu, 22 Dec 2016 19:45:09 +0000 (12:45 -0700)]
layer:Add unique error ids for memory binding

Update all of the cases to validate that memory is bound to non-sparse
images and buffers to use the correct unique error id.

7 years agolayers:Add valid usage error ids
Tobin Ehlis [Thu, 22 Dec 2016 19:26:32 +0000 (12:26 -0700)]
layers:Add valid usage error ids

Update descriptor set cases where no memory bound to buffer or image to
use the correct respective unique error ids.

7 years agoscripts:Update stat script output
Tobin Ehlis [Thu, 22 Dec 2016 18:19:15 +0000 (11:19 -0700)]
scripts:Update stat script output

Improve stats script to output the filename and line numbers where a
unique error enum is being re-used. This makes it simple to pick
through the duplicates and evaluate them.

7 years agolayers:Fix unique error enum
Tobin Ehlis [Thu, 22 Dec 2016 18:00:07 +0000 (11:00 -0700)]
layers:Fix unique error enum

ResetCommandBuffer valid commandBuffer handle is id *00094, not *00090.
This was causing 90, which is for allocation, to be incorrectly reused.

7 years agobuild: Parameterize def file name
Lenny Komow [Fri, 23 Dec 2016 21:12:18 +0000 (14:12 -0700)]
build: Parameterize def file name

Change-Id: I697c856b7c7532a38823302a4decf78cdea583ae

7 years agolayers: remove unused variable
Frank Henigman [Fri, 23 Dec 2016 19:22:36 +0000 (14:22 -0500)]
layers: remove unused variable

7 years agolayers: Update Valid Usage enums (VL-61, final)
Mike Weiblen [Thu, 15 Dec 2016 19:24:24 +0000 (12:24 -0700)]
layers: Update Valid Usage enums (VL-61, final)

Update Valid Usage enums in a subsection of core_validation.cpp.

Refactored some helper functions to add parameter for msgCode.

Removed check that was redundant with object_tracker.

Update VU status in the database.

Fix a couple other typos.

This completes Jira task VL-61.

Change-Id: Ie7f11741892c68331b70bb1b611f5c80fe930018

7 years agolayers: add VU checks in image.cpp (Jira VL-66)
Dave Houlton [Thu, 1 Dec 2016 23:43:06 +0000 (16:43 -0700)]
layers: add VU checks in image.cpp (Jira VL-66)

Updated existing validation checks in image.cpp to new VU
enums with minor refactoring only. Left TODOs for other
VUs that will require more extensive redesign. Updated VU
database to match. Also minor updates to
layer_validation_tests to account for changed error
messages.

Change-Id: Ib6cc0e360ceeaae256b0cd0f1d272fe127c95419

7 years agolayers:Refactor CmdDispatchIndirect()
Tobin Ehlis [Wed, 21 Dec 2016 19:37:16 +0000 (12:37 -0700)]
layers:Refactor CmdDispatchIndirect()

Refactor CmdDispatchIndirect() to use pre/post pattern. Use shared
validate/update functions along with extra code to handle the
validation and state update of the buffer used for indirect call.

7 years agolayers:Refactor CmdDispatch()
Tobin Ehlis [Wed, 21 Dec 2016 19:26:38 +0000 (12:26 -0700)]
layers:Refactor CmdDispatch()

Refactor CmdDispatch() to use pre/post pattern. Updated the DrawType
helper functions for use with Dispatch functions as well. For the
update helper, broke that out into a separate DrawDispatch helper
that does common work, and then a Draw helper that calls the
DrawDispatch helper and then does some extra work only relevant
for draw calls.

7 years agolayers:Refactor CmdDrawIndexedIndirect()
Tobin Ehlis [Wed, 21 Dec 2016 19:22:11 +0000 (12:22 -0700)]
layers:Refactor CmdDrawIndexedIndirect()

Refactor CmdDrawIndexedIndirect() to use pre/post pattern.

7 years agolayers:Refactor CmdDrawIndirect() to use pre/post
Tobin Ehlis [Wed, 21 Dec 2016 18:21:36 +0000 (11:21 -0700)]
layers:Refactor CmdDrawIndirect() to use pre/post

Refactor CmdDrawIndirect() to use pre/post pattern and helper functions
for DrawType validate and update. There's a bit of extra validation and
state update that goes along with the buffer passed to this function vs
the Draw & DrawIndexed versions.

7 years agolayers:Refactor CmdDrawIndexed()
Tobin Ehlis [Wed, 21 Dec 2016 18:04:13 +0000 (11:04 -0700)]
layers:Refactor CmdDrawIndexed()

Refactor CmdDrawIndexed() to use Pre/Post pattern. Added validate and
update helper functions that should work for all four CmdDraw*
functions and initiall changed CmdDraw() and CmdDrawIndexed() to use
the helpers. Will update remaining two functions in follow-on CLs.

7 years agolayers:Improve perf warning for unused vtx buffer
Tobin Ehlis [Wed, 21 Dec 2016 17:28:54 +0000 (10:28 -0700)]
layers:Improve perf warning for unused vtx buffer

Fixes #1282

Track if a vtx buffer is ever used by a cmd buffer and only flag perf
warning if cmd buffer has a Draw added with a bound vtx buffer that has
never been used.

7 years agolayers:Kill synchAndPrintDSConfig() function
Tobin Ehlis [Wed, 21 Dec 2016 16:54:09 +0000 (09:54 -0700)]
layers:Kill synchAndPrintDSConfig() function

Delete synchAndPrintDSConfig() and related functions.
Lots of informational prints that aren't needed.

7 years agolayers:Split ValidateAndUpdateDrawState()
Tobin Ehlis [Wed, 21 Dec 2016 16:21:06 +0000 (09:21 -0700)]
layers:Split ValidateAndUpdateDrawState()

Split ValidateAndUpdateDrawState() to isolate validation and state
updates into ValidateDrawState() & UpdateDrawState() functions.

Refactored CmdDraw() to use Pre/Post patter with all state updates now
occurring in the Post function. Made some initial updates to other
Draw/Dispatch functions to call each new function in-line, but will
refactor these functions to use Pre/Post in follow-on commits.

7 years agolayers:Split validatePipelineDrawtimeState()
Tobin Ehlis [Wed, 21 Dec 2016 15:30:22 +0000 (08:30 -0700)]
layers:Split validatePipelineDrawtimeState()

Split validatePipelineDrawtimeState() into validate & update functions.
Also rename validatePipelineDrawtimeState() to
ValidatePipelineDrawtimeState().

7 years agolayers:Rename two functions to CamelCase
Tobin Ehlis [Wed, 21 Dec 2016 15:15:27 +0000 (08:15 -0700)]
layers:Rename two functions to CamelCase

7 years agolayers:Add PostCallRecordCmdDraw()
Tobin Ehlis [Wed, 21 Dec 2016 14:52:20 +0000 (07:52 -0700)]
layers:Add PostCallRecordCmdDraw()

Add PostCallRecordCmdDraw() to perform state updates for CmdDraw()
function. Don't quite have all state updates in there yet. Remaining
state updates will be in follow-on commit.

7 years agolayers:Separate state update from addCmd()
Tobin Ehlis [Mon, 19 Dec 2016 22:59:16 +0000 (15:59 -0700)]
layers:Separate state update from addCmd()

Update addCmd() function to only perform validation and rename it to
ValidateCmd(). Separate out the state update of last_cmd in cmd buffer
to new UpdateCmdBufferLastCmd() function.

Made sure that everywhere ValidateCmd() is called now also calls
UpdateCmdBufferLastCmd(). Currently just calling them back-to-back but
will continue with further updates that put the ValidateCmd() call into
the PreCallValidate*() function and the UpdateCmdBufferLastCmd() into
the PostCallRecord*() function.

Also included some comments on work that needs to be done while
breaking up CmdDraw() for pre/post functions.

7 years agolayers:Pass cmd buffer as log_msg object
Tobin Ehlis [Mon, 19 Dec 2016 22:20:53 +0000 (15:20 -0700)]
layers:Pass cmd buffer as log_msg object

Fix some old TODOs where cmdBuffer was not being correctly passed into
log_msg as the src object.

7 years agolayers:Remove unneeded return value
Tobin Ehlis [Mon, 19 Dec 2016 22:16:37 +0000 (15:16 -0700)]
layers:Remove unneeded return value

MarkStoreImagesAndBuffersAsWritten() only updates state and the return
value was a constant false. Update function to remove the return value.

7 years agoloader: clean up comment and variable
Michael Jurka [Mon, 19 Dec 2016 15:31:43 +0000 (16:31 +0100)]
loader: clean up comment and variable

Make one variable's name plural to clarify that it
contains more than one layer.  Also, clean up a
comment that wrapped prematurely to the next line.

7 years agoUse Python instead of greadlink to get full path on macOS
Michael Jurka [Mon, 19 Dec 2016 15:31:43 +0000 (16:31 +0100)]
Use Python instead of greadlink to get full path on macOS

Python is built-in on Macs; this avoids an unnecessary dependency on greadlink

7 years agoloader: Fix out of memory in enumerate phys devs
Lenny Komow [Thu, 22 Dec 2016 22:29:43 +0000 (15:29 -0700)]
loader: Fix out of memory in enumerate phys devs

Change-Id: I9f25875f065f7db58f9c8841965ba1f2f974de90

7 years agolayers:Update dispatchable object printing
Tobin Ehlis [Thu, 22 Dec 2016 17:42:36 +0000 (10:42 -0700)]
layers:Update dispatchable object printing

Fixes #1188

Uniformly print all dispatchable handles in error messages as pointers
with the "%p" print specifier.

7 years agoloader: Update term phys devices dynamically
Lenny Komow [Tue, 20 Dec 2016 22:35:11 +0000 (15:35 -0700)]
loader: Update term phys devices dynamically

Change-Id: Ib474a7af431746d9e820e188681d2a9310e94a0d

7 years agoloader: Update tramp phys devices dynamically
Lenny Komow [Tue, 20 Dec 2016 00:11:40 +0000 (17:11 -0700)]
loader: Update tramp phys devices dynamically

Change-Id: I693598b5c9f72ecee10661e3af9420941b2bd67c

7 years agoandroid: Preserve toolchain build if present
Cody Northrop [Thu, 22 Dec 2016 18:12:49 +0000 (11:12 -0700)]
android: Preserve toolchain build if present

Similar to a2e6ddd1 which preserves it for desktop.

7 years agoloader: guard gcc feature appropriately
Frank Henigman [Thu, 22 Dec 2016 03:21:41 +0000 (22:21 -0500)]
loader: guard gcc feature appropriately

Macro __GNUC__ should be used to guard gcc-specific code.
Also exclude clang because though it defines __GNUC__ it
doesn't accept this particular gcc feature.

Change-Id: I703289cad58e7675f4c4ca5e7635fc8fb35ae77e

7 years agoMerge pull request #1300 from KhronosGroup/161221-fix_string_validation
Courtney Goeltzenleuchter [Wed, 21 Dec 2016 23:44:28 +0000 (16:44 -0700)]
Merge pull request #1300 from KhronosGroup/161221-fix_string_validation

loader: Fix validation error

7 years agoloader: Fix validation error
Courtney Goeltzenleuchter [Wed, 21 Dec 2016 23:24:34 +0000 (16:24 -0700)]
loader: Fix validation error

The string length validation will not detect strings
that exceed the max length.
For example, when i = max_length-1 and utf8[i] is a valid
character (>= 0x20 and < 0x7f) no error is thrown and
the next iteration will end the loop.
This change extends the loop and the if check to
catch this issue.

7 years agoloader: Fix Clang warning in table_ops.h
Jamie Madill [Wed, 21 Dec 2016 18:09:59 +0000 (13:09 -0500)]
loader: Fix Clang warning in table_ops.h

This fixes the following warning:

error: cast between incompatible calling conventions 'cdecl' and 'stdcall'; calls through this pointer may abort at runtime

This was revelated by building the loader with Clang on Windows in
32-bits mode. In 64-bits this warning doesn't appear, presumably due
to different calling conventions.

Change-Id: I7018be38859695436487f582f515bfb08ca28e06

7 years agolayers: Add missing <string> dependency
Michael Jurka [Mon, 19 Dec 2016 15:31:43 +0000 (16:31 +0100)]
layers: Add missing <string> dependency

Change-Id: Ib3c74be1e1d3c168720aaef4dafed1a6a04c7d9b

7 years agocmake: speed up the build
Jeremy Hayes [Tue, 20 Dec 2016 22:20:25 +0000 (15:20 -0700)]
cmake: speed up the build

Remove old dependencies from cmake, which was causing long build times
even when nothing had changed.

Change-Id: Ie162606b54352306ae6400aa18e942d8cffb7782

7 years agolayers: Update Valid Usage enums (VL-61, partial)
Mike Weiblen [Tue, 20 Dec 2016 03:41:58 +0000 (20:41 -0700)]
layers: Update Valid Usage enums (VL-61, partial)

Update Valid Usage enums in a subsection of core_validation.cpp by
adding a parameter to helper functions insideRenderPass() and
outsideRenderPass().  Update that VU status in the database.

Fix a couple other typos.

This partially implements Jira task VL-61.

Change-Id: I8d1fe99a237c4cd22216a1236f47f72fffd4fd00

7 years agoscripts: Remove enum/struct_validate_helper funcs
Mark Lobodzinski [Thu, 15 Dec 2016 21:14:28 +0000 (14:14 -0700)]
scripts: Remove enum/struct_validate_helper funcs

From vk_helper.py.  These were not used in the codebase.

Change-Id: I3cc80e34eb831122ce8c54dbc004a003e02a47fe

7 years agolayers: Remove unused header from threading/PV
Mark Lobodzinski [Thu, 15 Dec 2016 20:54:20 +0000 (13:54 -0700)]
layers: Remove unused header from threading/PV

vk_struct_validate_helper.h not used.

Change-Id: I19757e96900e0500f4db9355c38a497936706bba

7 years agolayers: Remove redundant CreateRenderpass checks
Mark Lobodzinski [Thu, 15 Dec 2016 20:15:12 +0000 (13:15 -0700)]
layers: Remove redundant CreateRenderpass checks

From the image layer.  The check for valid attachment layouts
and load/storeOps already performed in the parameter validation
layer. Also removed now-dead support function and unneeded
header file.

Change-Id: I4f1ad1ba899a712ba21ae32e3b3e2d947b640f4d

7 years agolayers: Remove enum_validate_helper from PV
Mark Lobodzinski [Thu, 15 Dec 2016 20:06:55 +0000 (13:06 -0700)]
layers: Remove enum_validate_helper from PV

A single call was used, replaced with an internal generated function
call and removed the old include. Added note with validation error
ID.

Change-Id: Ied88daf5bab003269c44ef2bef8b2eb81a9e9094

7 years agolayers: Remove unused threadchecker header file
Mark Lobodzinski [Wed, 14 Dec 2016 21:34:06 +0000 (14:34 -0700)]
layers: Remove unused threadchecker header file

Change-Id: I7906b82c1c9c0397113508da74348ea28fe21add

7 years agolayers: Remove cmds vector from GLOBAL_CB_NODE
Chris Forbes [Mon, 19 Dec 2016 22:33:11 +0000 (11:33 +1300)]
layers: Remove cmds vector from GLOBAL_CB_NODE

Now that cmd buffer printing has been removed, the only use of this is
to distinguish between cmd buffers invalidated before and after a
complete recording. This should eventually be folded into the state
machine, but removing the vector of cmds is a first step.

Signed-off-by: Chris Forbes <chrisforbes@google.com>
7 years agolayers: Fix size_t-int cast warning in descriptor_sets
Jamie Madill [Mon, 19 Dec 2016 20:59:18 +0000 (15:59 -0500)]
layers: Fix size_t-int cast warning in descriptor_sets

Discovered in VS2015.

Change-Id: I2a42209a9ee9bd0e8f3da21c0f1a613315d5a6ce

7 years agolayers:Clean up descriptor set layout on destroy
Tobin Ehlis [Mon, 19 Dec 2016 18:16:14 +0000 (11:16 -0700)]
layers:Clean up descriptor set layout on destroy

Erase destroyed descriptorSetLayout from map.

7 years agolayers:Add validation flag for DestroyBuffer()
Tobin Ehlis [Mon, 19 Dec 2016 17:57:29 +0000 (10:57 -0700)]
layers:Add validation flag for DestroyBuffer()

7 years agolayers:Refactor DestroyBuffer()
Tobin Ehlis [Mon, 19 Dec 2016 17:53:58 +0000 (10:53 -0700)]
layers:Refactor DestroyBuffer()

Update DestroyBuffer() to use Pre/Post pattern. All of the state
updates are now only performed if call down chain is not skipped.

7 years agolayers:Add GetQueryPoolResults() validation flag
Tobin Ehlis [Mon, 19 Dec 2016 17:20:43 +0000 (10:20 -0700)]
layers:Add GetQueryPoolResults() validation flag

7 years agolayers:Refactor GetQueryPoolResults() to pre/post
Tobin Ehlis [Mon, 19 Dec 2016 17:11:50 +0000 (10:11 -0700)]
layers:Refactor GetQueryPoolResults() to pre/post

Refactor GetQueryPoolResults() to use Pre/Post pattern. Pulled all of
the validation into PreCallValidate* function. There was only one
state update occuring so pulled that code into PostCallRecord function.

7 years agolayers:Add validation flag for DestroyQueryPool()
Tobin Ehlis [Fri, 16 Dec 2016 22:02:44 +0000 (15:02 -0700)]
layers:Add validation flag for DestroyQueryPool()

7 years agolayers:Refactor DestroyQueryPool
Tobin Ehlis [Fri, 16 Dec 2016 21:56:41 +0000 (14:56 -0700)]
layers:Refactor DestroyQueryPool

Refactor DestroyQueryPool() to use Pre/Post pattern. This moves the map
update to after the call down the chain which is where it should live
so that it only executes when validation passes.

7 years agolayers:Add validation flag for DestroySemaphore()
Tobin Ehlis [Thu, 15 Dec 2016 21:36:56 +0000 (14:36 -0700)]
layers:Add validation flag for DestroySemaphore()

7 years agolayers:Add validation flag for DestroyFence()
Tobin Ehlis [Thu, 15 Dec 2016 21:35:21 +0000 (14:35 -0700)]
layers:Add validation flag for DestroyFence()

7 years agolayers:Refactor DestroySemaphore
Tobin Ehlis [Thu, 15 Dec 2016 21:32:22 +0000 (14:32 -0700)]
layers:Refactor DestroySemaphore

Refactor DestroySemaphore() to use Pre/Post pattern.

7 years agolayers:Refactor DestroyFence
Tobin Ehlis [Thu, 15 Dec 2016 21:18:39 +0000 (14:18 -0700)]
layers:Refactor DestroyFence

Refactor DestroyFence() to use Pre/Post pattern.

7 years agolayers:Rename QUEUE_NODE to QUEUE_STATE
Tobin Ehlis [Thu, 15 Dec 2016 18:37:02 +0000 (11:37 -0700)]
layers:Rename QUEUE_NODE to QUEUE_STATE

7 years agolayers:Refactor GetDeviceQueue
Tobin Ehlis [Thu, 15 Dec 2016 18:34:33 +0000 (11:34 -0700)]
layers:Refactor GetDeviceQueue

Move the state update for GetDeviceQueue into Post* function.

7 years agolayers: Make generators Python 2.7-compatible.
Jamie Madill [Tue, 13 Dec 2016 22:02:57 +0000 (17:02 -0500)]
layers: Make generators Python 2.7-compatible.

ANGLE and Chromium are fixed with Python 2.7, so we need to update
the generator to something that is compatible with 2.7 and 3.2.
The unicode handling is different between the two, so switch
scripts to use unicode literals (u'txt' instead of 'txt').

Change-Id: I1570a45e302a09bb1f99eabc84f50b2ec599944d

7 years agolayers: Update VU database for scissor/vp checks
Mark Lobodzinski [Sun, 18 Dec 2016 16:42:23 +0000 (09:42 -0700)]
layers: Update VU database for scissor/vp checks

Updated status for 1430-1434444.

Change-Id: Ie31ff617dd30b1ef3850398ef100e874c3c1acb4

7 years agolayers: Add scissor/viewport count checks
Mark Lobodzinski [Sun, 18 Dec 2016 16:43:01 +0000 (09:43 -0700)]
layers: Add scissor/viewport count checks

Change-Id: I35977325f662d3e4df84d02d2eefa4383fae9c05

7 years agolayers: GH1261, Incorrect ParamValidation error msgs
Mark Lobodzinski [Thu, 15 Dec 2016 22:49:59 +0000 (15:49 -0700)]
layers: GH1261, Incorrect ParamValidation error msgs

Out-of-date dynamic state errors incorrectly specified that viewport
or scissor counts had to be greater than zero 'if the dynamic state
bit was not specified'. Removed this confusing condition.

Change-Id: Idf206e8671b04979b7a0f5e9597e4a7aec50333f

7 years agoscripts:Update unique error enums as of 12/19/16
Tobin Ehlis [Mon, 19 Dec 2016 13:47:53 +0000 (06:47 -0700)]
scripts:Update unique error enums as of 12/19/16

Six updates and some new valid usages.

Cmd to do the update was:

python spec.py -update -remap 127-132:128-141:1465-1263:2168-1646,2:2373-1965

7 years agoheader: Update to Vulkan version 1.0.38
Mark Lobodzinski [Mon, 19 Dec 2016 16:41:16 +0000 (09:41 -0700)]
header: Update to Vulkan version 1.0.38

- header:  Updated vulkan.h
- scripts: Updated generator.py
- scripts: Updated vk.xml
- scripts: Merged recent genvk.py changes into lvl_genvk.py
- layers:  Updated json files
- loader:  Updated SOVERSION to 38
- header:  Updated vulkan.hpp

Change-Id: Id0f83c248169bd8b1e03a14c90a5f9b1661cfcc7

7 years agolayers: Update error enum database
Mark Lobodzinski [Fri, 16 Dec 2016 20:20:57 +0000 (13:20 -0700)]
layers: Update error enum database

Signified coverage, LVTs for a handful of checks.

Change-Id: I0e0ac413f9b76793b325b96ef030ce4b90656315

7 years agolayers: Remove redundant CV checks
Mark Lobodzinski [Fri, 16 Dec 2016 20:06:41 +0000 (13:06 -0700)]
layers: Remove redundant CV checks

These CreateGraphicsPipeline checks are covered in
parameter_validation.

Change-Id: I4c273aa2cd88791d2f6cfa7a5b6c48e629706a85

7 years agolayers: Move new check into parameter validation
Mark Lobodzinski [Fri, 16 Dec 2016 20:08:00 +0000 (13:08 -0700)]
layers: Move new check into parameter validation

Added an old CreateGraphicsPipelines CV check into PV.

Change-Id: I68310859e4ffc926502549b46a2fcc82af0e3538

7 years agolayers:Refactor consecutive descriptor count
Tobin Ehlis [Thu, 15 Dec 2016 14:51:20 +0000 (07:51 -0700)]
layers:Refactor consecutive descriptor count

Refactor GetConsecutiveDescriptorCountFromBinding() to use the fact
that bindings are now stored in-order. No longer need to chase binding
order through the map, just get current binding index and then parse
rest of the binding array in-order.

7 years agolayers:Store DescriptorSetLayout class in-order
Tobin Ehlis [Mon, 12 Dec 2016 22:59:34 +0000 (15:59 -0700)]
layers:Store DescriptorSetLayout class in-order

Sort the bindings in the internal data structure of the
DescriptorSetLayout class so that they're stored in binding order.

This commit keeps the interface and mapping structures the same.
Further commits will take more use of the fact that layout is now
stored in binding order.

7 years agolayers: Remove check for nonCoherentAtomSize
Tony Barbour [Thu, 15 Dec 2016 19:12:29 +0000 (12:12 -0700)]
layers: Remove check for nonCoherentAtomSize

It's come to our attention that this check, while matching the spec,
may be a little overzealous and could cause a lot of existing code
to start failing validation.  We plan to address this with the spec
working group, and we're removing the check for now.

Change-Id: I7159b72fe0a2e81bf75bccddc9939da7086992b7

7 years agoloader: Fix Clang warnings.
Jamie Madill [Wed, 14 Dec 2016 22:21:43 +0000 (17:21 -0500)]
loader: Fix Clang warnings.

error: equality comparison with extraneous parentheses
error: comparison of array equal to a null pointer is always false
error: using namespace directive in global context in header

Change-Id: I52b5d9062653b9429b9c42b40eca54e71b6d794b

7 years agolayers: Update Valid Usage enums (VL-70)
Mike Weiblen [Sat, 10 Dec 2016 00:36:28 +0000 (17:36 -0700)]
layers: Update Valid Usage enums (VL-70)

Reviewed the following 5 files' invocation of log_msg()
for opportunities to update for Valid Usage enums.
layers/threading.h
layers/vk_layer_logging.h
layers/descriptor_sets.cpp
layers/swapchain.cpp
layers/unique_objects.cpp

Split some composite checks apart, to better match the meaning of
individual VUs.

Added VU enums to a new file, and expanded the stats collection
script to include the new file.

Changed some placeholder uses of msgCode=="0" to
"VALIDATION_ERROR_UNDEFINED".
(0 is the value of the enum VALIDATION_ERROR_00000 which was misleading)

When Valid Usage enums were referenced, also updated the VU database.

Tweak #include order for Windows, to undo clang-format reordering.

Completes Jira task VL-70.

Change-Id: I550922b194e733f41316ae493098f70a54cbd64e

7 years agolayers: PR1276, Fix Clang compiler warnings
Jamie Madill [Thu, 15 Dec 2016 14:35:36 +0000 (09:35 -0500)]
layers: PR1276, Fix Clang compiler warnings

fixes
- error: using namespace directive in global context in header
- error: comparison of integers of different signs: 'uint32_t'
         (aka 'unsigned int') and 'int'

Change-Id: If56d5b9c33f0de813fbb67120650a887eb9368b0

7 years agolayers: Updated val error database with new checks
Mark Lobodzinski [Thu, 15 Dec 2016 14:42:57 +0000 (07:42 -0700)]
layers: Updated val error database with new checks

Updated status, applicable tests for errors 00669 and 02160.

Change-Id: Ia52d31f00820882fe2837928b6ab1702c57f26f5

7 years agolayers: Updated error enums for sparse_binding checks
Mark Lobodzinski [Wed, 14 Dec 2016 20:37:04 +0000 (13:37 -0700)]
layers: Updated error enums for sparse_binding checks

Change-Id: Ib76fcb782a54edf6e53d17fed0bcb25eecca22d9

7 years agolayers: GH1260, SPARSE_BINDING_BIT validation
Maciej Jesionowski [Wed, 14 Dec 2016 10:01:21 +0000 (11:01 +0100)]
layers: GH1260, SPARSE_BINDING_BIT validation

- add error message for size (error 00663)
- add error messages for buffer and image flags (error 00669 and 02160)
- remove obsolete TODOs
- fix a typo in vkCreateImage validation, add error code

Change-Id: I50d6111c4aed1b348119a9664ec299f7c2cb7884

7 years agolayers: Fix object tracker memory leak
Mike Schuchardt [Tue, 13 Dec 2016 21:04:57 +0000 (14:04 -0700)]
layers: Fix object tracker memory leak

Upon repeated calls, GetDisplayPlaneSupportedDisplaysKHR will call
CreateObject multiple times with the same VkDisplayKHR handle.  Add a
check in CreateObject for an existing tracking object before allocating
a new one.

Change-Id: I50f634fbe8b7e69edbfeb4e6f0c050b7fccaa6e4

7 years agoscripts: Add quiet option option to vk_helper.py.
Jamie Madill [Wed, 14 Dec 2016 18:05:05 +0000 (13:05 -0500)]
scripts: Add quiet option option to vk_helper.py.

Chromium typically does not allow build steps to output anything
during a build. This option allows for ANGLE to suppress normal
script output during execution.

Change-Id: I72695a80a5f25e9a2cf3f01832f3de63ca95b091

7 years agolayers: Complain in AcquireNextImageKHR if the swapchain is replaced
Chris Forbes [Thu, 8 Dec 2016 22:00:21 +0000 (11:00 +1300)]
layers: Complain in AcquireNextImageKHR if the swapchain is replaced

V2: Tweak error language for Ian

Signed-off-by: Chris Forbes <chrisforbes@google.com>
7 years agolayers: Track whether a swapchain has been replaced
Chris Forbes [Thu, 8 Dec 2016 21:39:26 +0000 (10:39 +1300)]
layers: Track whether a swapchain has been replaced

If a swapchain is used as VkSwapchainCreateInfoKHR::oldSwapchain, then
it is replaced. This occurs even if the new swapchain creation fails.

Signed-off-by: Chris Forbes <chrisforbes@google.com>
7 years agoloader: Removed some unnecessary code.
Mark Young [Wed, 14 Dec 2016 00:19:32 +0000 (17:19 -0700)]
loader: Removed some unnecessary code.

Now that all WSI paths need the ICD structs, I can get rid of
a code path no longer used.

Change-Id: Ib5073cd2074fcd66453dae5b6c89870c81f7f958

7 years agoAllocate for real ICD surfaces for the VK_KHR_display extension
Piers Daniell [Tue, 13 Dec 2016 23:51:49 +0000 (16:51 -0700)]
Allocate for real ICD surfaces for the VK_KHR_display extension

This was done for all the other WSI extensions, just not VK_KHR_display

7 years agolayers:Fix uninitialized variable
Tobin Ehlis [Tue, 13 Dec 2016 19:39:44 +0000 (12:39 -0700)]
layers:Fix uninitialized variable

Zero-init the map_range variable before checking for aliasing of a
mapped memory region.

7 years agolayers:Fix typo
Tobin Ehlis [Tue, 13 Dec 2016 19:26:44 +0000 (12:26 -0700)]
layers:Fix typo

aliase->aliased

7 years agolayers:Warn on buffer/image aliasing
Tobin Ehlis [Tue, 13 Dec 2016 19:16:58 +0000 (12:16 -0700)]
layers:Warn on buffer/image aliasing

The Buffer-Image Granularity section of the spec details what must be
done to avoid having a linear buffer alias with a tiled image, but it
does not state that such aliasing is a definite error.

Demoting this check to a warning.

7 years agolayers: Update Valid Usage enums in log_msg
Mike Weiblen [Tue, 6 Dec 2016 17:28:00 +0000 (10:28 -0700)]
layers: Update Valid Usage enums in log_msg

Update Valid Usage enums in core_validation and update
their status in the VU database.
This completes Jira task VL-65.

Change-Id: I51ed327ad65f3a5d1f64bba01ad576c6656f88df

7 years agobuild: Disable clang-format header reordering
Mark Lobodzinski [Tue, 13 Dec 2016 17:54:48 +0000 (10:54 -0700)]
build: Disable clang-format header reordering

By default, clang-format will sort header files which often breaks
compilation. Added an option to the main, tests, and layers versions
of these files to disable header reordering.

Change-Id: Ic0cc5727b83d14d5f3962f3ecff7b6bf5e4c5fb9

7 years agolayers: Add some val/state-update todos
Mark Lobodzinski [Mon, 12 Dec 2016 15:33:13 +0000 (08:33 -0700)]
layers: Add some val/state-update todos

Couple of routines combine state updates and validation, adding a
note for future work.

Change-Id: I417025bbcabfd3e80ccefe166bc6ea3497222753

7 years agolayers: Update error database for new checks
Mark Lobodzinski [Tue, 13 Dec 2016 15:47:35 +0000 (08:47 -0700)]
layers: Update error database for new checks

Added 2510 and 2518.

Change-Id: I278bfe12d78c5239aa00f82ac4a1b35b5dcd58d0