History log of /external/vulkan-validation-layers/layers/descriptor_sets.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
5f6b7bf3dab2c213b407e1dc16129c04e4405ff3 07-Feb-2018 Dave Houlton <daveh@lunarg.com> layers: clang-format only

Whole-file clang-format of layers .h and .cpp files

Change-Id: I683ad38fa9bced371a923b86d8cc916f2c2aa947
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
a1d2144eeb19b4ac81e730a469329d841196343b 13-Feb-2018 Tobin Ehlis <tobine@google.com> 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.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
21a24d428d8a4075bc835d4220d2092254e17b32 24-Jan-2018 John Zulauf <jzulauf@lunarg.com> 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
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
e13b0d1d0c63c2e30811d455d3b73d66445ba674 23-Jan-2018 John Zulauf <jzulauf@lunarg.com> 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
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
f57f451e6ce7a4952beb3d26d59ebeb0c077dcba 17-Jan-2018 John Zulauf <jzulauf@lunarg.com> layers: Add validation for destroyed layouts

Add three tests to flag with descriptor set update operations are being
done to descriptor sets with destroyed descriptor set layouts. The tests
use overload VUID (generic "must be valid * handles) which need to be
replaced with specific ones when they are added to the spec.

VALIDATION_ERROR_15c00280 (write dst must be valid) ->
write dst created from destroyed layout
VALIDATION_ERROR_03207601 (copy dst must be valid) ->
copy dst created from destroyed layout
VALIDATION_ERROR_0322d201 (copy src must be valid) ->
copy src create from destroyed layout

Change-Id: I8a3edc67b3e86037cdaa6353176814abfddef1a0
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
0d034c42db8436d15de6b88dc3977cde56cb7a54 13-Jan-2018 Yuly Novikov <ynovikov@chromium.org> layers: Fix Android build

ndk-bundle/sources/cxx-stl/llvm-libc++/include/set
expects comparator's operator() to be const.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
fdbf6f370d7e0f715a07ed31364c9e4d8466c6d9 12-Jan-2018 Artem Kharytoniuk <artemalive@gmail.com> layers: Fix typos in ValidateUpdateDescriptorSets
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
e42c65bc66d00100f346b1e99784168ce11b6e3d 05-Jan-2018 John Zulauf <jzulauf@lunarg.com> layers: Make DescriptorSetLayout robust for CTS

CTS sends an invalid descriptor set that the validation tracking was not
robust to -- two binding with identical binding ID values. After
reporting the invalid input data, the test application could crash.
Validation internal data is now created in a way that invalid data
should less easily cause program termination.

Change-Id: Ib84a5234267f7bece9be377badd22696e3633b1b
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
61e4ca90b669387237558926a72d120b2083bc9c 23-Dec-2017 John Zulauf <jzulauf@lunarg.com> layers: Add validation caching for draw/dispatch

Validation of descriptors at draw or dispatch time is now cached, s.t.
without changes that affect validity, validation checks are not
repeated.

Change-Id: I713662d00813989bf4441921456afca431d730d7
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
598bbcca827760018f9dd8e0ffede7dc0dc97688 23-Dec-2017 John Zulauf <jzulauf@lunarg.com> layers: Replace iterative DS Get.* with maps/sets

Profiling indicated hot spots in DescriptorSet Get functions which
iterated in binding space to lookup values. Replaced iterative searches
with maps/sets.

Additionally simplified construction, optimized map/set creation and
Get.* for DescriptorSet and DescriptorSetLayout.

Change-Id: Ia2948e56333d3643d4377b39e75acf4c951d558b
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
c9c7afdf4aa0ce0d3929b9d831bb9e29d75a94ab 15-Dec-2017 John Zulauf <jzulauf@lunarg.com> layers: Combine global binding start/end lookup

Binding start/end lookup where using two separate maps indexed on a
common key. Combined to avoid repeated lookups.

Change-Id: I57ed71736537de5eb83fe41599a8acec9bf23d13
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
055fc8fd459f0da279d4814f927ea7090dd0f7e9 09-Dec-2017 Petr Kraus <petr_kraus@email.cz> build: Clear some compiler warnings

- remove unnecessary ";" after function definitions and namespaces
- fix
wrong type match in printf for handle types
- convert some left-overs to `HandleToUint64`
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
fa0eddb05f4a7c95604e8622999085b224f3fbfb 13-Oct-2017 Józef Kucia <joseph.kucia@gmail.com> layers: Remove validation error for copying nonupdated descriptors

The spec doesn't say much about descriptors copy update valid usage, but
it doesn't seem to require that descriptors are updated before copying.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
86e7835a164132ada3f3ee8d3226047542f9ffa9 11-Oct-2017 Tobin Ehlis <tobine@google.com> layers:Verify valid buffer for tex buff ds update

Fixes #2104

Make sure that buffer underlying the bufferView of texel buffer for a
uniform or storage texel buffer update has a valid buffer behind it.
Object tracker only checks to make sure that the view itself hasn't
been destroyed, so need this extra level of checking at this level to
avoid crash.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
6f4f6c67020802095d262d2053af6ae64f92c511 21-Sep-2017 Józef Kucia <joseph.kucia@gmail.com> layers: Correctly check if descriptor was updated
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
61ad54359b083bdf09e7f27bd9e355ff50c6ceae 10-Sep-2017 Józef Kucia <joseph.kucia@gmail.com> layers: Use layout flags to test for push descriptor sets
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
2d4a3c28bf95f00fa2aac7d07288f6faf22208ab 21-Aug-2017 Mark Lobodzinski <mark@lunarg.com> layers: Account for push descriptor sets in CV

Change-Id: I1095edce0f26e2a4ced6fa301143622dc5cd0afd
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
ea25bfefc8d16250ee64492db242e76b3cb0758e 09-Aug-2017 Tobin Ehlis <tobine@google.com> layers:Fix consecutive binding updates

Fixes #1992

When we're wrapping a descriptor update for consecutive bindings, fix
code so that index into update array consistently increases.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
f009b4494ba3c94f24bfa2360568b46e6e50535f 21-Jul-2017 Chris Forbes <chrisforbes@google.com> layers: Resolve TODO about actual layouts

This VU exists now in recent specs.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
90f57a1c0ee224c6ba8a9d143690d69cb5961485 21-Jul-2017 Chris Forbes <chrisforbes@google.com> layers: Implement check for binding of maint1 slice of 3d image to DS

Fixes #1910
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
96d0e7d0167107a1ebc2a98c02de7523c7af4256 14-Jul-2017 Tobin Ehlis <tobine@google.com> layers:Handle deleted image view in descriptor

When an image descriptor with a destroyed image view was used we hit an
assert. This is not caught upstream and can occur if a descriptor is
re-used following image view deletion. Add code to catch this case
and report the destroyed image view.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
49a45ec0e50568e9561dcca5a1490dd630b84516 07-Jul-2017 Tobin Ehlis <tobine@google.com> layers:Identify layout from pipelineLayout

When checking IsCompatible() for a DescriptorSetLayout, the passed-in
layout is always from a pipelineLayout, however this was not specified
in the code. Add comment to specify this usage and update the error
message to always distinguish which of the layouts using in the compare
is from the pipelineLayout.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
88224335ef7965e89477c393331ef5fa628a9335 21-Jun-2017 Tobin Ehlis <tobine@google.com> layers:IsCompatible uses raw DSLayout ptr

Update IsCompatible calls for DescriptorSetLayout class to use raw ptrs
instead of shared_ptr as the calls just temporarily use the ptr and
don't affect ptr ownership.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
bdb20c0ebf75b1abcc8d763097ea9b126efee1b1 21-Jun-2017 Tobin Ehlis <tobine@google.com> layers:Set DescriptorSetLayout in DS to const

The DescriptorSetLayout pointed to by shared_ptr in DescriptorSet is
const so add const across uses as appropriate.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
6430856671acd01e2387df74771e33976418645a 21-Jun-2017 Tobin Ehlis <tobine@google.com> layers:Pass shared_ptr by const ref

DescriptorSetLayout shared_ptr will always survive the lifetime of the
DescriptorSet constructor so pass by const ref.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
d34b2c191243c1646f1ccc2378262383e9ec1348 20-Jun-2017 Tobin Ehlis <tobine@google.com> layers:Migrate DSLayout to shared_ptr

Update Descriptor Set Layout copy in Descriptor Set, as well as various
ptr references to use shared_ptr.
This fixes some potential memory leaks and makes Descriptor Set class
lighter weight.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
827e8708bfc431aa792cba005ebf9f1fe35cc7e3 13-Jun-2017 Mark Lobodzinski <mark@lunarg.com> layers: Use copies of layout data for descriptorsets

DescriptrSets used pointers to descriptorsetlayout data, which caused
invalid references if the layouts were deleted before the descriptor
sets. Changed the layer to copy the data.

Change-Id: I671f1efed2aa0986f3a370b51f2f96c07b555af7
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
d4eaca34eca7f4b4e34190c441a579347bb2016a 01-Jun-2017 Mark Lobodzinski <mark@lunarg.com> layers: Move CV to use new extension helper

Change-Id: Idb18d0f358fd359c1c5862fba394c833e2fa13f1
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
315b15c3d74eb1df11b992c2b9922cf98e939eb8 24-May-2017 Tobin Ehlis <tobine@google.com> layers:Migrate to new validation error IDs

Migrate valid usage IDs to new numbers based on the string IDs that are
integrated into the spec build process.

The formula for mapping the string ID to the new VALIDATION_ERROR enum
value is in vuid_mapping.py script.
The mapping between the old IDs and the new IDs is in the file
"old_vuid_to_new_mapping.txt."

The vk_validation_error_database.txt file has the new IDs as well as
the string-based ID for each element and a column indicating if the
valid usage is in the core spec or if it requires extension(s) and is
therefore in the extension spec.

The error messages were shortened and no longer include a section
reference. Now the link goes directly to the line in the spec where
the valid usage text occurs. The base of the spec link is the core spec
unless the VU requires an extension in which case the spec with all
extensions is used as the base.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
9b6bedb9061a3ab94386ee9293da1dd43267a680 14-May-2017 Petr Kraus <petr_kraus@email.cz> layers: Transition all to HandleToUint64

Mostly automatic (i.e. probably missed some cases)
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
2044b110851e8f1b75d6d406a0c88612476c63db 11-May-2017 Chris Forbes <chrisforbes@google.com> layers: Remove swapchain image special case from ValidateBarriers

Swapchain images have been added to the images table for a long time.
The checks below were also inconsistent about using the extracted data
or just going to image_data.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
87a57d8e822316de46ee97f514187331b1f4f09d 11-May-2017 Tobin Ehlis <tobine@google.com> layers: Validate shared presentable image cases

Add validation support for shared presentable images as defined in
VK_KHR_shared_presentable_image extension.

For all uses of shared presentable images, make sure that the image is
appropriately in VK_IMAGE_LAYOUT_PRESENT_SRC_KHR layout.
For two cases where no layout validation was performed, added a TODO
note (vkCmdBlitImage, vkCmdResolveImage) as basic layout validation
should first be added upstream.
Also locked the layout in the case where a front-buffered image is
presented and then flag an error if an attempt is made to transition
the image layout after that point.

Change-Id: I06cda727e3a7f56ccff4bffd7503b5ff73e8a795
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
6c7bc833f3a93217bd85447643f86e4885adb411 09-May-2017 Chris Forbes <chrisforbes@google.com> layers: Remove default ctors for {Image,}SamplerDescriptor

These just added confusion; we already support the !immut case in the other
ctor.

V2: ImageSamplerDescriptor remaining ctor was buggy.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
7b57c1142bc3c530f6697d3957daad89ce9d4f36 09-May-2017 Chris Forbes <chrisforbes@google.com> layers: Don't start ImageSamplerDescriptor w/ immut as updated.

This descriptor is NOT initially updated; it's invalid until the Image
component is set.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
ba811d3143bf79a05339344966e811175caad09f 08-May-2017 Chris Forbes <chrisforbes@google.com> layers: Don't skip validating image part of combined image+immut sampler

This early out was from another time...
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
93f2d24a40c6b2d686e8e881a1407f603b78e3dd 08-May-2017 Tobin Ehlis <tobine@google.com> layers:Immutable samplers are updated at creation

Fixes #1741

Descriptors with immutable samplers are updated at the time they're
created. Set update bool for descriptor sets with immutable samplers
at the time they're created. This will prevent false positives.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
70af918fb4b7b784ae1edd5c0625e60e273eef4d 02-May-2017 Chris Forbes <chrisforbes@google.com> layers: Make device extension enables consistent

I want to get rid of the "_enable" suffix everywhere to allow for a
second instance of the same structure to represent the /supported/ set
for better diagnostics.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
3251dd855490066e66a663dece5afee8ca0b95cd 24-Apr-2017 Mark Lobodzinski <mark@lunarg.com> layers: Banish 'skip_call' once and forever

Except for swapchain.cpp, which is undergoing a merge into CV.

Change-Id: I8b18518ef662a9a11a808ef3dce1b8f60d858fb3
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
7a9423788398dbeb6d1fe0354a66123b61afda96 13-Apr-2017 Mark Lobodzinski <mark@lunarg.com> layers: Switch CV over to layer object types

Convert internal uses of VkDebugReportObjectTypeEXT for the core-
validation layer to use the internal layer-povided object-type.

Also modified tests for changed error text.

Change-Id: If080f4bf452ead0c6fecc648309bfd95b27fc0ce
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
0db18ab1345f9e10907913b22ea5d57bd48077eb 07-Apr-2017 Tobin Ehlis <tobine@google.com> layers:Add image layout validation for descriptors

This change adds validation to make sure that an image layout at the
time the image is used in a descriptor matches the layout that was
given when the descriptor was updated.

Because image view covers a range of mip levels, loop over each level
and verify layouts one at a time.

Also Updated a number of validate functions to use cont ptr params for
data that they aren't changing.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
16769f6b2a7721e391952a97f010cbb530e4f211 29-Mar-2017 Dave Houlton <daveh@lunarg.com> layers: Rename format utils, strip Vk

Change-Id: I4d192db22c51d2e9224b74487bfd5d6a58405028
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
1c55ba02ac8e31fad486ae3ffcf7d207a5e4179a 28-Mar-2017 Dave Houlton <daveh@lunarg.com> layers: refactor layer utils

Split format-related helper fxns out of vk_layer_utils.cpp into a new
file vk_format_utils.cpp. Remove the duplicated fxns in the render
framework and share the new format utils across both projects.
Rename the util fxns into CamelCase per coding std.

Change-Id: I0f9a34bc5931dfca085dfdc8d4800664aec526cf
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
57eda737eea95dd728f6dce5c78d6b00fb126076 21-Mar-2017 Mike Schuchardt <mikes@lunarg.com> layers: VK_KHR_maintenance1 false positives

Skip checks that no longer apply when VK_KHR_maintenance1 is enabled.

Change-Id: I84d0fe889d0e567045aeb7fa7463dd2ec0d56789
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
7a7c05af97a73fc6d4917ddda909f119583ff9fc 14-Mar-2017 Tobin Ehlis <tobine@google.com> layers:Connect VK_EXT_validation_flags

Add support for VK_EXT_validation_flags in core_validation.
The only enum currently supported is VK_VALIDATION_CHECK_ALL_EXT which
disables all existing flags in validation. Note that most checks are
still not guarded by flags so that option will only disable the checks
that are guarded by flags.

In testing this I found a bug with AllocateDescriptorSets() where
common state was not updated with the flag enabled so this includes a
fix for that issue as well.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
760ecd0b73e1941e08bd63c5fa8a44499d7e7c3e 09-Mar-2017 Jeremy Hayes <jeremy@lunarg.com> tests: Fix DSBufferInfo unexpected errors

Change-Id: I594243d7879ed9999571c4f185724ba42d2ed7b6
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
b48cceab5349230df8635a2284fc2c89323d81c0 10-Mar-2017 Mark Lobodzinski <mark@lunarg.com> layers: Add GetNextValidBinding function to CV

Change-Id: Ifaa7aea1c7569ffaf5d417a1cd5caadaa38c96b0
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
25f3712aed1cebdcb7c92eb25c5f1cc6e5986ac4 10-Mar-2017 Mark Lobodzinski <mark@lunarg.com> layers: Move desc set helper to descriptorset module

Change-Id: I695cf51b6fa27df7585582f545c0077efb9fd432
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
d0b59d0aabea9048c518840e762c7a510927c132 10-Feb-2017 Mark Lobodzinski <mark@lunarg.com> layers: Consolidate GetPhysicalDevice* accessors

Simplified core_validation->descriptor_sets/buffer_validation.

Change-Id: I6921ac458bce5899e8bd60145bfaa0e0f5e8a2ac
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
e40189d4deab674240cd9baf4c063bab4567c212 08-Feb-2017 Tobin Ehlis <tobine@google.com> layers:Add using statements for layer_data

Add "using core_validation::layer_data;" to descriptor and buffer
validation files. This cleans up the code without adding any confusion
or name collisions.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
9a9a0db2a973034d4286b6d4c62a46beb7641791 08-Feb-2017 Tobin Ehlis <tobine@google.com> layers:Rename get* utility functions

Rename get* helper functions to have capital first letter in-line with
coding standard.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
dcb502ef002257b5ead25231535c5f4951d62c6b 03-Feb-2017 Tobin Ehlis <tobine@google.com> layers:Add buffer descriptor device limit checks

This adds missing checks for max range for storage and uniform buffer
updates. Also update database file.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
cc7c305c82f6443c324165edb7af59f60fc87eeb 26-Jan-2017 Mark Lobodzinski <mark@lunarg.com> repo: Clang-format LVL source files using Google

Switch clang-format standard from the LLVM style to the
Google style for more consistency.

Change-Id: I247c4abc275d7873a91522e1e234198adaa24033
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
bc9caa57c5583dfdf05198e78b78a7cb361da16c 26-Jan-2017 Mark Lobodzinski <mark@lunarg.com> repo: Clang-format c/cpp/h LVL files using LLVM

Bring all source files in the repo up to date with consistent
coding style/standard.

Change-Id: Iceedbc17109974d3a0437fc4995441c9ad7e0c23
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
acad629aa45651ee72bd7ed828e8c59bc4a364fe 04-Jan-2017 Tobin Ehlis <tobine@google.com> layers:Remove redundant checks

Remove descriptor set check to make sure that src & dest descriptor
sets of copy update are valid. Object_tracker already verifies this.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
b07b3c52d8248b424b3c97e035981abd57a6e306 04-Jan-2017 Tobin Ehlis <tobine@google.com> layers:Add TODO comments for valid usage updates

Note a few unique error enum duplicates that should have their own
unique ids added through spec updates.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
0f3b6b868dde8bebc6ffb7646db21c122e44c46b 03-Jan-2017 Tobin Ehlis <tobine@google.com> scripts:Exceptions for duplicate unique ids

Added a number of exceptions for duplicate uses of unique error enums
that are valid. Also added some comments to a few cases that need new
unique ids.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
ffa1c08650c9dbe798f25b88bef4b28d33d57b01 29-Dec-2016 Tobin Ehlis <tobine@google.com> layers:Don't pass active binding set around

The active bindings set was being passed around but the data is only
used in a couple places and an alternate form of it is available in the
binding->requirement map. Also, the binding set was wrong in that it
stored bindings for all bound sets at draw time, but was being used to
check bindings for individual sets.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
cca5c5fef8ad021f43f90be5bf8533035aeb579b 22-Dec-2016 Tobin Ehlis <tobine@google.com> layers:Remove redundant check

Remove valid buffer check from descriptor_sets.cpp that's already
handled in object_tracker.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
35ec5e14e463d342b74ffe33ee542be13d5c6639 22-Dec-2016 Tobin Ehlis <tobine@google.com> 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.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
12ad1656638aa3f6c719a27ead8aa7fdbc6dd25e 22-Dec-2016 Tobin Ehlis <tobine@google.com> 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.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
ec2ff49aea47929f28679d7bbe598ec439db7bb5 21-Dec-2016 Tobin Ehlis <tobine@google.com> 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.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
38de34103bb8f7a91527ce04f9537b82dd526638 19-Dec-2016 Jamie Madill <jmadill@chromium.org> layers: Fix size_t-int cast warning in descriptor_sets

Discovered in VS2015.

Change-Id: I2a42209a9ee9bd0e8f3da21c0f1a613315d5a6ce
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
9686cab5697c592d41d1137e0cec1f5820ba9fa2 15-Dec-2016 Tobin Ehlis <tobine@google.com> 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.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
936929e16f77d4f5abeb924b5171cc1ac1705236 12-Dec-2016 Tobin Ehlis <tobine@google.com> 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.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
9c41b0b91bbd6bd1fb0ed7d8ecc6946bddb611a5 02-Dec-2016 Mark Lobodzinski <mark@lunarg.com> layers: Fix Windows build

STL min/max functions were causing windows build failures.

Change-Id: Ia153a5d6a3d245b645b5f829c3f076c023d865f1
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
5b6ae2bab15bc66805ab9e1bb9b1c21f3fa39ae9 30-Nov-2016 Tobin Ehlis <tobine@google.com> layers:Handle consecutive descriptor updates

Fixes #1165

According to spec descriptor updates should roll over to the next
binding number. If bindings were out of order, this was broken in
validation.

This fix corrects validation and state update for out-of-order
descriptor bindings by checking consecutive updates based on correct
binding count for consecutive bindings and by performing updates
on a per-binding basis, making sure to roll update over to the
correct next binding.

Also update the error message, related negative test, and database
file.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
bfa6bf1f1ccff329a0988831eb67a6b588657ec9 23-Nov-2016 Tobin Ehlis <tobine@google.com> layers:Unique enums for vkAllocateDescriptorSets

Add appropriate unique error enums to the code for allocating
descriptor sets from a pool without enough sets left and without
enough descriptors left.
These were already flagged as implemented but the enums hadn't been
added to the code.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
915456ab3831f14ed530861ccdef084bd091e8a0 21-Nov-2016 Tobin Ehlis <tobine@google.com> layers:Remove redundant periods

These error messages are all amended to error messages that already
include a period at the end so deleting the extra periods.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
c6f4565e979c78ffec5be1edd59c0a777ec1754d 21-Nov-2016 Tobin Ehlis <tobine@google.com> layers:Check for update of empty binding

Validation error if descriptor update performed on an empty binding.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
39c845ed4c066740e9efaed0a00af51be07c67c1 21-Nov-2016 Tobin Ehlis <tobine@google.com> layers:Warn on cmd buffer invalidate

From Mikko Strandborg

When a resource gets deleted, any command buffer that references it
gets invalidated, and an error gets thrown whenever that command buffer
is submitted. However, for a developer, it's quite hard to deduce what
exactly caused that to happen. This patch emits a warning whenever a
command buffer that's in CB_RECORDING state (meaning that it has had
its vkBeginCommandBuffer called but not End). This way the developer
can set a breakpoint on that to see exactly what causes the buffer to
be invalidated.

Destroying a resource that's being used in an open command buffer is
almost certainly a bug, but there might still be cases where it might
be valid behavior (for example, when the application decides to abort
an operation), therefore it's not an error but a warning instead.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
5cca7b0a90e0b6fe1cc28ddbe9037c3ce3f3ee13 16-Nov-2016 Tobin Ehlis <tobine@google.com> layers:Rename BUFFER_NODE->BUFFER_STATE
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
d87d172d120ea3f00bfd34335537332d7ce61a89 15-Nov-2016 Tobin Ehlis <tobine@google.com> layers:Check all memory bindings

There are a few places in the code where we assume that an image or
buffer doesn't have a sparse binding. These cases break with sparse
bindings.

To fix I added a function to BINDING class to retrieve all memory
bindings and then updated a few spots with bad assumption to make use
of this new GetBoundMemory() function.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
74b87f15f8812556caa3964e30098a8ededd5bc6 17-Nov-2016 Tobin Ehlis <tobine@google.com> layers:Fix descriptor dynamic offset handling

Fixes #1162

The dynamic offsets passed in at descriptor bind time are ordered based
on the binding order and any consecutive array indicies within those
bindings. When we validate the dynamic offsets at draw time, we were
using the entire dynamic offset array, but only the active bindings.

If we had an inactive dynamic binding before the end of the bindings
we would use the wrong offsets.

This change fixes the issue by creating a mapping between bindings and
dynamic offset array indicies at descriptor layout creation time. At
draw time the mapping is then used to lookup the correct dynamic offset
array index for a given binding.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
d31a44af6da568692a73201825459689c9431867 20-Oct-2016 Tobin Ehlis <tobine@google.com> layers:Rename SAMPLER_NODE->SAMPLER_STATE
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
3f1d2ba6852cf6b1bb4e1f06d690293565108e2c 26-Oct-2016 Tobin Ehlis <tobine@google.com> layers:CreateDescriptorSetLayout cleanup

Streamline duplicate binding check, use [] operator instead of emplace,
remove dead comment and add new comment.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
0c347fc6b08172b778c259e1a1219a2403495d48 25-Oct-2016 Tobin Ehlis <tobine@google.com> layers:Refactor CreateDescriptorSetLayout

Update CreateDescriptorSetLayout() to use Pre/Post pattern and split
out validation of createInfo for the layout to occur before the
creation of the layout.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
2083721ccdace484e9cf6f820223d2d471e12fd7 25-Oct-2016 Tobin Ehlis <tobine@google.com> layers:Update error enum for duplicate bindings

Add unique error enum for the case where descriptor bindings are
duplicated.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
d79335137b414d5f89284a9ab3e014beb4ada3eb 18-Oct-2016 Mike Weiblen <mikew@lunarg.com> layers: Reword from cryptic abbreviations to readable words

Expand abbreviations to improve readability:
DS=depth/stencil
DS=descriptor set
CB=command buffer
VS=vertex shader
FS=fragment shader
VTX=vertex
PSO=pipeline state object

Change-Id: I48fe917aac50d1911fe2a3aa1ed2c739637c7645
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
e46491ee6f16b9d29e68914fc6522aba2fde0ad4 11-Oct-2016 Tobin Ehlis <tobine@google.com> layers:Add BINDABLE superclass for image/buffer state

Support for sparse memory binding is virually non-existant in current
validation layers. This is a first step down a long path to improve
sparse binding support.

The BINDABLE superclass is sub-classed by IMAGE & BUFFER state objs
and contains memory binding info in both the single binding and
sparse binding cases.

Bindings are initially encapsulated in the new MEM_BINDING struct.
For single binding cases, things are almost exactly the same as they
have always been. For sparse binding, the various bindings will be
stored in the sparse_bindings set where we initally don't have complete
information on the sparse binding as we only store the MEM_BINDING info
but this is a start.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
dfb574441c7821174b2ed5ea7a3c56f05caa1def 17-Oct-2016 Tobin Ehlis <tobine@google.com> layers:Kill blank array element for empty binding

Fixes #1053

DescriptorLayout class was incrementing global index for empty bindings
which led to an empty array entry that could cause invalid errors when
updating descriptors.
This change will only increment global index for non-empty bindings.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
1facd2c91911508b9fb61f54a56269841299f663 13-Oct-2016 Tobin Ehlis <tobine@google.com> layers:Rename IMAGE_NODE to IMAGE_STATE

Another node->state rename pass.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
c70d8a0489a4c409157c2d68234edd45567fbcad 12-Oct-2016 Tobin Ehlis <tobine@google.com> layers:Bind descriptor pool to cmd buffer

Add pool state to DescriptorSet instead of just the pool.
Then, at bind time, create a dual binding between the cmd buffer
and the pool. This correcly puts pool in-use when cmd buffer is
submitted, as well as flagging cmd buffer as INVALID if/when the
pool is destroyed.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
bf903628512a08002e11923bd955e308a8be3d81 12-Oct-2016 Tobin Ehlis <tobine@google.com> layers:Update some pool_node naming

Change some pool_node names to pool_state in DescriptorSet class.
Also update getPool function prototype to the new name of
getDescriptorSetState().
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
853200371e633f86f828eaf27562fcdcdb28a8e8 12-Oct-2016 Tobin Ehlis <tobine@google.com> layers:Add pool member to DescriptorSet class

When creating a DescriptorSet instance, record the pool that the set is
allocated from in a private pool_ variable.
Then, when binding a set to a cmd buffer, also create a binding between
the command buffer and the pool.
This allows us to catch the in-use case when sets are implicitly freed
by calling vkDestroyDescriptorPool().
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
a21f0d8ac8389dc4e23749efc02d82a7ec1eaee3 12-Oct-2016 Tobin Ehlis <tobine@google.com> layers:Rename DESCRIPTOR_POOL_NODE to *_STATE

Continuing the NODE->STATE renaming effort
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
6e62fd77eded55becc241d44ae9d07153fc1ffc0 10-Oct-2016 Tobin Ehlis <tobine@google.com> layers: Validate correct layout for STORAGE_IMAGE descriptors

According to the spec "Load and store operations on storage images can only
be done on images in VK_IMAGE_LAYOUT_GENERAL layout."

This change flags an error if a STORAGE_IMAGE descriptor is updated with an
image layout other than GENERAL.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
7286e20c06011d3c6fa7edfbdbadd42bb6e8cc35 07-Oct-2016 Tobin Ehlis <tobine@google.com> layers: Pass unique error codes through descriptor validation

Descriptor validation builds up error strings at multiple levels such as
UpdateError->WriteUpdate->BufferUpdate->BufferOffset. The final error is
then reported via a log_msg() call at the top level.

In order for this design to allow for the new unique error codes, we need
to pass error codes down the chain in the same way we pass error strings
down the chain.

This change adds error msg passing for descriptor updates. Many error
codes are added in as well as comments for codes that are missing or need
to be updated.

The database file is also updated to account for all of the checks that
were updated and/or reviewed.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
1c48e214b2ed50690da7f42f2013be3a6ef267df 06-Oct-2016 Tobin Ehlis <tobine@google.com> layers: Updating descriptor checks to use unique enums

Initial batch of updates to use unique validation error enums and
messages for a few checks. Updated the database file and flagged
some other checks that are missing along with "TODO" notes in the
code.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
77b6217754b9c167b08cb151e70b41a948e36277 28-Sep-2016 Tobin Ehlis <tobine@google.com> layers: Add binding between cmd buffer and bufferView

For a texel descriptor update, add binding between bufferView and the
command buffer as well as between underlying buffer and command buffer.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
dd75b52c0bd5aadb682f157107bd59c2715d1d1b 23-Sep-2016 Alex Smith <alex@alex-smith.me.uk> layers: Fix VerifyCopyUpdateContents on combined image sampler descriptors

A missing break at the end of the ImageSampler case results in falling
through to the Image case, leading to spurious validation errors such as:

vkUpdateDescriptorsSets() failed copy update from Descriptor Set 0x108
to Descriptor Set 0x137 with error: Attempted copy update to image
descriptor failed due to: Invalid VkImageView: 0x100000000
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
1cba4e1b5940c6818572e05dcad5a3a47fafbc9e 21-Sep-2016 Tobin Ehlis <tobine@google.com> layers: Clean up no memory bound checks

When memory is freed make sure to clear bindings in associated objects.

Also clean up reporting of no memory bound errors. Old assumption was that
no memory had every been bound, but it's also possible to hit such errors
if the bound memory was freed prior to operation of interest.
In descriptor error cases where no memory is bound, add a final error string
as clarification since descriptor errors are built up of multiple strings
with details from each function call in the tree.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
8fd42fd0e53f0ce2fc6a5bbecc2ec3ba4730a00e 21-Sep-2016 Tobin Ehlis <tobine@google.com> layers: Verify memory is bound to images used to update descriptors

Fixes #663

For vkUpdateDescriptorSets() calls that include an image, verify that memory is bound to the image.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
03ea795b83fdf0099594808a1a57064dea7f02a1 19-Sep-2016 Tobin Ehlis <tobine@google.com> layer: Add in-use validation for imageView

Bind imageView from a descriptor to the command buffer at CmdBindDescriptorSets
time and check for an in-use imageView at DestroyImageView time.

Also use new AddCommandBufferBindingImageView() helper to bind children of
framebuffer in AddFrameBufferBinding().
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
39267c0c27b8f032f05a6747eb02d4508247fdc1 14-Sep-2016 Tobin Ehlis <tobine@google.com> layers: Update BufferView state tracking

Create BUFFER_VIEW_STATE class to hold VkBufferViewCreateInfo and update related
state tracking. This class derives from BASE_NODE in preparation for tracking
in_use for BufferViews consistent to other object in_use tracking.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
79fde938178535f598e030a0e9d19a0cb61b72e0 14-Sep-2016 Tobin Ehlis <tobine@google.com> layers: Update ImageView state tracking

Create IMAGE_VIEW_STATE class to hold VkImageViewCreateInfo and update related
state tracking. This class derives from BASE_NODE in preparation for tracking
in_use for ImageViews consistent to other object in_use tracking.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
5a1776c2f613625a6fc6fd205f315996b743d86a 31-Aug-2016 Chris Forbes <chrisforbes@google.com> layers: Fix reporting of multiple allowed image view types

This isn't the problem we were hitting in #890, but we'd produce a misleading message if multiple bits were allowed

Signed-off-by: Chris Forbes <chrisforbes@google.com>
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
763bcfac4084ffc64013bc224743507b024faae0 31-Aug-2016 Chris Forbes <chrisforbes@google.com> layers: Don't spuriously produce an error if there are no view type bits set

Previously we'd complain about any input attachment, since we don't constrain
its view type at all.

Signed-off-by: Chris Forbes <chrisforbes@google.com>
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
1abb984ebd667af808ed308ddf79cbaeaed129ca 22-Aug-2016 Tobin Ehlis <tobine@google.com> layers: Update descriptor binding to use an ordered map

When dealing with dynamic offsets, the binding numbers, and array indices within
a binding, are all sequential.
This is according to the spec "Descriptor Set Binding" section which states,
"...entries are ordered by the binding numbers in the descriptor set layouts; and
within a binding array, elements are in order."

This means when processing the binding numbers to validate the dynamic offsets at
draw time, we should do so in order to make sure that the sequential dynamic offset
index correctly correlates with the dynamic offset being processed.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
8316bb0ecea76b15e75029ee634a282f7429e851 17-Aug-2016 Tobin Ehlis <tobine@google.com> layers: Add cmd buffer binding for descriptor resources

This commit creates bindings between a cmd buffer and the images/buffers
and their memory allocations that are tied to that cmd buffer's active
descriptor slots (set/binding combination).
The active resources are anything that's in use during any of the draws
issued in the cmd buffer.
If any of the bound resources are deleted, the cmd buffer will become
invalid and an error will be issued on the next attempt to submit it.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
56f8a8f9b7e8c01d76d73be117ebcb66035db6df 17-Aug-2016 Tobin Ehlis <tobine@google.com> layers: Add tracking between sampler and cmd buffer

Update SAMPLER_NODE to inherit from BASE_NODE and keep track of
cb_bindings for sampler.
At draw time, add any bindings between cmd buffer and samplers that
are connected to active descriptors.
At DestroySampler() time, set CB_INVALID for any cmd buffers in
cb_bindings.
Also includes some additional plumbing to prepare for connecting
images/buffers that are tied to descriptor sets to cmd buffers that
those sets are bound to.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
aa21bc3b3c5c7adfeb488fc80bdcb339d63615b8 17-Aug-2016 Tobin Ehlis <tobine@google.com> layers: Only bind active sets to cmd buffers

Don't create a binding between every set bound to a cmd buffer, but only
the sets that are verified active at draw time.
Gather up active descriptorset bindings in prepration of also binding the
resources from each individual active set to the cmd buffer.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
a45bdcb94b2fbda36bc191e12cc20218f62fb0e0 21-Jul-2016 Tobin Ehlis <tobine@google.com> layers: Add descriptor sets to CB_INVALID tracking

This is start of a series intended to enable CB_INVALID tracking for
descriptor sets. Much of the tracking is already in place in the
special-purpose uniqueBoundSets data struct, so I'll be migrating
the tracking from that struct to the more general-purpose
object_bindings set.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
545e6f9a7c02e861c1c63082902b9ce025ed0156 22-Aug-2016 Tobin Ehlis <tobine@google.com> layers: Fix spelling dynami->dynamic
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
366c38bafc7ab9e7b899c6731b6a2824420c03b9 26-Jul-2016 Chris Forbes <chrisforbes@google.com> layers: Validate image view type requirement for descriptor sets

Signed-off-by: Chris Forbes <chrisforbes@google.com>
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
b2a61f3cd17c68887759817059fa1872f1e1464a 25-Jul-2016 Chris Forbes <chrisforbes@google.com> layers: Add plumbing for descriptor requirements

We want to be able to impose requirements on images & views bound to
descriptor sets based on their usage in the shader. This adds the
plumbing from pipelines into descriptor sets to enable that.

Signed-off-by: Chris Forbes <chrisforbes@google.com>
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
462b10fb9164f7b10d547d5999beaa87c021e731 20-Jul-2016 Tobin Ehlis <tobine@google.com> layers: Validation buffer descriptor updates for bound memory

When updating buffer descriptors, make sure that there is memory bound to any
non-sparse buffer.
Add comment that we don't need to do this for image descriptor updates
because they require the imageView (not just image) and we already validate
at imageView creation that memory is bound to image.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
de7672b6b749c09c5991bd8038b3a35ef82a69dc 18-Jul-2016 Tobin Ehlis <tobine@google.com> layers: Remove DRAWSTATE_INVALID_POOL check

This check was only flagged when Allocating descriptor sets or resetting
a descriptor pool, and in both cases object_tracker will be the first layer
to identify and flag the error.

Removing this as a redundant check and updating documentation.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
5badc7fe9a2ef2917f0f312af7a4191dec7e2589 02-Jul-2016 Tobin Ehlis <tobine@google.com> tests: Add tests for invalid VkDescriptorBufferInfo

Hit 3 new checks just added for VkDescriptorBufferInfo:
1. offset larger than buffer
2. range of 0
3. range larger than buffer size minus offset

Also update descriptor write and copy update error enums to be more clear,
along with also updating documentation.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
b6ea68a3913828edff5655b1608f97eb292dcb8a 02-Jul-2016 Tobin Ehlis <tobine@google.com> layers: Add validation for VkDescriptorBufferInfo struct

For a descriptor write update to a buffer type, verify that the contents of
VkDescriptorBufferInfo struct are valid according to valid usage guidelines
of the spec.

Spun off the usage bit validation into its own function ValidateBufferUsage().
Previous ValidateBufferUpdate() function now calls that function as well as
performing all of the checks for the buffer, range, and offset members of
VkDescriptorBufferInfo struct.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
e1cc7cf9e8a7808209ecc45df2421f3a494daccc 25-Jun-2016 Tobin Ehlis <tobine@google.com> layers: Unify invalid command buffer handling

Created a single vector to track any cmd buffer dependencies that are destroyed
and thereby cause the cmd buffer to become invalid. Currently just tracking
the previous object types of descriptor sets and framebuffers, but will update
the tracking to include all cmd buffer dependencies in future commits.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
d119d1f6896796f6387925babceff3924be76199 21-Jun-2016 Tobin Ehlis <tobine@google.com> layers: GH616 Improve descriptor set invalid binding handling

Prior to calls to get an global index from a binding, make sure that
HasBinding() is called to verify that the binding exists.
Added HasBinding() calls to a couple of validation functions for
early exist.
Updated code comment to indicate that HasBinding() call should
precede GetGlobal*IndexFromBinding() calls.
Added assert() to GetGlobal*IndexFromBinding() calls in the error case
to make error more obvious in debug builds.
Note that Perform*Update() functions already indicate that they should
be preceded by their matching Validate*Update() functions, which include
the appropriate checks for HasBinding().
case the Validate*Update() funciont
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
b0f6d2946e9153c8f4ab77571935865a738f4ad8 15-Jun-2016 Tobin Ehlis <tobine@google.com> layers: GH644 Validate DS image aspect bit restriction

If a DS image is used in a descriptor, regardless of the underlying
image layout, we need to validate that BOTH DEPTH and STENCIL aspect
bits are NOT set. Only one of the two bits is allowed.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
fdc4acc89017a2be4a4bec9f5608e622a75f5f14 20-Jun-2016 Tobin Ehlis <tobine@google.com> layers: Fix dynamic descriptor count

When creating descriptor set layout, we were only incrementing the dynamic descriptor
count by 1 regardless of the number of descriptors in a binding. This fix increments
the count by the number of descriptors in the binding.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
e3f7c45fd64a44a67ce96c89e2bbee426c6ecf24 02-Jun-2016 Tobin Ehlis <tobine@google.com> layers: Clean up poolMap access

Remove some unneeded passing of poolMap around and use getPoolNode()
function in DescriptorSet class.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
b110cb87b9478586719d7f7dc769b350857366ba 02-Jun-2016 Tobin Ehlis <tobine@google.com> layers: Added getSwapchainNode() helper

Added getSwapchainNode() helper to core_validation and update
DescriptorSet class to use it.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
170dc65b45f6bcdec47e02b3aa19435e55b32804 02-Jun-2016 Tobin Ehlis <tobine@google.com> layers: Add getSwapchainFromImage() helper

Add getSwapchainFromImage() to core_validation and use it from
DescriptorSet class.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
5f5aad3ea9e850c28720eac312d100209956cdee 02-Jun-2016 Tobin Ehlis <tobine@google.com> layers: Remove unneeded layout_map
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
6d1373829eded68f6e080ff2c33e03231360ed57 02-Jun-2016 Tobin Ehlis <tobine@google.com> layers: Add getImageNode() helper

Add getImageNode() helper to core_validation and use it.
Also update DescriptorSet class to use the helper and kill
its image_map member.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
2c59c1d90b22aa759d785e4233e468616990ff92 02-Jun-2016 Tobin Ehlis <tobine@google.com> layers: Add getImageViewData() helper

Switch imageViewMap to store unique_ptrs. Add getImageViewDate() helper
to core_validation and update DescriptorSet to use it.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
9a55ca3674bb3fac3fbdfca9515a16a224aa9055 02-Jun-2016 Tobin Ehlis <tobine@google.com> layers: Add getSamplerNode() helper

Kill sampler_map_ in DescriptorSet and add getSamplerNode() helper
and use it instead.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
2f2db584f5d79892bd84d0a24b8ca3499985a5c2 02-Jun-2016 Tobin Ehlis <tobine@google.com> layers: Add getBufferViewInfo() helper

Add helper function to core_validation for bufferViewMap look-ups
and use the helper in DescriptorSet class.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
57fc8e28c2e16118f9827e3ae1b107a27e0451a2 02-Jun-2016 Tobin Ehlis <tobine@google.com> layers: Update getMemObjInfo helper

Standardize core_validation use of getMemObjInfo() and update
DescriptorSet class to use it as well.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
8718070cf3e206488c168f1e6b9dd06d6880c9bc 02-Jun-2016 Tobin Ehlis <tobine@google.com> layers: Add getBufferNode() helper

Move core_validation bufferMap to use unique_ptr to BUFFER_NODE.
Perform bufferMap look-ups using getBufferNode() helper function.
Update DescriptorSet class to use getBufferNode() helper and store
layer_data instead of bufferMap.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
104ab082916e41467ef60baaab7a5a8b2e02c59c 02-Jun-2016 Tobin Ehlis <tobine@google.com> layers: Make layer_data visible to DescriptorSet

This is the start of migrating core_validation::layer_data to be
visible in DescriptorSet class.
DescriptorSet class can't see the contents of layer_data, so it also
needs the get<Object>() helper functions to look up items from the
maps. This first change only brings along getSetNode() utility
function so only set_map references can be removed.

Will add follow-on CLs to remove more maps from DescriptorSet class
and bring in more utility functions.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
7f61868b44f1da1dfa6a4ff726020411db92ce0d 01-Jun-2016 Tobin Ehlis <tobine@google.com> layers: Pass common data between pre/post AllocDescriptorSets

With the break between PreValidate* and PostRecord* calls in the layers
we can suffer having to do some repeat work in the Post step. In order
to prevent this, this CL slightly modifies the interface to pass common
data between the pre/post calls in a custom AllocateDescriptorSetsData
struct.

I initially attempted to fill this data in a separate function that
would preceed the PreValidate* call, but such a function would need to
include some validation as it includes map checks which may fail.
The simplest solution, then, seems to be passing a ptr to the common
data to the PreValidate* function who then fills the data. If the
validation and call down the chain succeed, the PostRecord* function
then takes a ptr to the common data to prevent having to redo the
work that was done at validation time.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
7e73e5c6b3020b96a821985f73012f2af0f1b992 26-May-2016 Tobin Ehlis <tobine@google.com> layers: Add DescriptorSet interface for allocation

Create a top-level "Validate" and "Perform" interface for the
vkAllocateDescriptorSets() function in DescriptorSet class.

Refactor AllocateDescriptorSets() in core_validation to use the
new interface. All checks are now performed in a "Pre" function
and all state updates are recorded in a "Post" function.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
7381ec6aff7976baf550f9918bc914c486ec5a04 02-Jun-2016 iostrows <igor.ostrowski@intel.com> layers: GH611 Fix dynamic offset indexing
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
bb4e127ade02cab07e173500a3c6f3e9bb52cfc2 25-May-2016 Tobin Ehlis <tobine@google.com> layers: DescriptorSet class indentation fixes

More cases where "else" blocks weren't needed because the
"if" block returns.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
36c6435049204bbdbd4909005b431a5717b8041e 24-May-2016 Tobin Ehlis <tobine@google.com> layers: Improve descriptor copy update validation

Add buffer usage bit validation for descriptor copy updates.
Pass down known descriptor type to copy validate function to
avoid having to look it up again.
Fix various incorrect "write" references in the copy update
error messages.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
0186bd5a2cccdc8b1552d1235d3dc4a10287b66b 24-May-2016 Tobin Ehlis <tobine@google.com> layers: Remove unneeded else block

The "if" case returns so no need for this else block or the indentation
that it includes.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
e2de40ad4581afb9c4b5f00c74d2a77918e2f4a7 24-May-2016 Tobin Ehlis <tobine@google.com> layers: Add usage bit validation for buffer descriptors

Verify that buffer used to update all buffer descriptor types (texel or
general) has the correct usage bits set.
descriptor
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
24bc74a0ff49ef2ddf6f13b0498e3eb8b849190e 24-May-2016 Tobin Ehlis <tobine@google.com> layers: Add usage bit validation for image descriptors

Verify that images used in imageView that's passed to various image
descriptor types have the correct usage bits set.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
a79d75bd6a8e1224d5d32c8d3d646eecfca18bb9 30-May-2016 Chris Forbes <chrisforbes@google.com> layers: take better advantage of emplace_back in descriptor sets

Doesn't win us anything to use emplace_back to invoke a copy
constructor. Construct the unique_ptr from raw ptr in-place instead.

Signed-off-by: Chris Forbes <chrisforbes@google.com>
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
d77f9c625a93fa4973ef3e5a35da5129b5f34ecd 31-May-2016 Chris Forbes <chrisforbes@google.com> layers: Remove old hacks for imprecise descriptor tracking for compute

We do it properly now.

Signed-off-by: Chris Forbes <chrisforbes@google.com>
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
9319aad73ddc9ceea3a19dc1b2a51e707b888f2d 19-May-2016 Tobin Ehlis <tobine@google.com> layers: DescriptorSet class clean-up

Minor formatting improvements, removed some useless "const" decls
and unused vars and updated a few error codes to be more appropriate.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
b58b69ad3fa4ea6a37b67f7bae974e86a07ef354 19-May-2016 Tobin Ehlis <tobine@google.com> layers: Verify that src of copy update is updated

Before verifying source update comments make sure that the source
descriptors have been updated. This guards against some obscure
corner cases where a bad source descriptor could slip through the
content verification.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
6b67c2aac9862a21e0dd068966c8b0b3aaf0bafd 18-May-2016 Tobin Ehlis <tobine@google.com> layers: Refactor DescriptorSet update interface

Mainly refactor and moving code in order to provide an interface to
DescriptorSet class that matches top-level vkUpdateDescriptorSets()
function.

Split the validation of an update as a separate task from performing
the update. This allows validation prior to calling down the chain
and then only update the state if validation is clean.

Hoisted all of the update validation into the DescriptorSet class
which prevents having to copy all of the maps into the individual
Descriptor classes. This simplifies both their creation and updating
their contents.

Updated the top-level core_validation UpdateDescriptorSets() code
to match Vulkan Validation Layer Authoring Guidelines. As this is
an initial POC for the architecture, I kept the Pre* & Post* functions
in the core_validation.cpp file, but they should eventually be spun
out.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
fda02154007d70e5c078c29585c5e8fdd90ebc5f 17-May-2016 Tobin Ehlis <tobine@google.com> layers: Improve DescriptorSet cleanup

Create private helper function InvalidateBoundCmdBuffers() within the
DescriptorSet class to unify invalidate cases due to set being updated
or freed.

Add a destructor for DescriptorSet to make sure that no bound cmd buffers
hang on to deleted set references.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
9d17becd811b49e1ecf91a02eee22f9cf7cbc026 17-May-2016 Tobin Ehlis <tobine@google.com> layers: Refactor DescriptorSet Update code

This migrates code for DescriptorSet in_use and flagging bound
command buffers as invalid from core_validation.cpp into DescriptorSet
class.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
c20ad7c6c296ae63b46170068cf469edc5bfb995 05-May-2016 Tobin Ehlis <tobine@google.com> layers: Migrate VerifyUpdateConsistency to DescriptorSetLayout class

This was in the DescriptorSet class, but really belonged in the Layer.
There was also a bug where it did not correctly handle the case of an
initial offset that oversteps the size of the first binding being updated.
That is legal according to the spec so added code to handle that case by
walking the bindings until we get to the actual binding on which the first
update will occur.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
958678d33c9de693ddbf4c914036d38635edd366 05-May-2016 Tobin Ehlis <tobine@google.com> layers: Store layout bindings_ by value instead of ptr

Kill the ptr to safe_VkDescriptorSetLayoutBinding in DescriptorSetLayout
class. This saves us the "new" and the need for a custom destructor.
Couldn't do this initially but I've since added copy constructors
to all of the safe_* struct types.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
683d27a244d39559d501eb89ae5a175decb3e31c 05-May-2016 Tobin Ehlis <tobine@google.com> layers: Remove unused IsUpdated(uint32_t) from DescriptorSet class

All of the functionality that I thought I would need this for is contained
in the ValidateDrawState() function.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
9b75a75125a3539106dcbafa956a3ac7ca7b6c67 05-May-2016 Tobin Ehlis <tobine@google.com> layers: Removed unused full_update_ from DescriptorSet class

I originally added this thinking it would be useful but currently
unused and not correctly tracked so just killing it.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
631ac48b00310e3997eb63f3734909b7d015df8a 05-May-2016 Tobin Ehlis <tobine@google.com> layers: Remove use of map at() function from descriptor_set class
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
bd6e25b0182a29b6502791a4184de94e73c5f714 05-May-2016 Tobin Ehlis <tobine@google.com> layers: Clean up access to descriptors_ vector

Migrate a number of unneccessary .at() calls to just use [] operator.
Also replace push_back() calls at descriptor creation time with emplace_back().
/external/vulkan-validation-layers/layers/descriptor_sets.cpp
cb9ce9e05b8e939d3da35c64997c70049877f4fe 03-May-2016 Tobin Ehlis <tobine@google.com> layers: Rearchitect Descriptor Set validation code

This change pulls all of the DescriptorSet code out of core_validation.cpp and into
its own files/classes in descriptor_set.h/cpp.

See header file for complete class documentation.

These changes pass tri/cube/smoketest --validate.
All related layer validation tests are also updated and passing.
Finally, I ran it through mustpass CTS and did not hit any issues related to these changes.

These changes not only update the descriptor interface but fix some known lingering
bugs with how descriptor updates occurred. This includes now correctly handling
updates that cross binding boundaries and updates that write a subset of a binding.

Going forward this is a general outline for how we would like to evolve core_validation.
That is, we'd like to move the functionality of the checks into reasonable classes and
just have core_validation call into those classes to do the majority of the work.
/external/vulkan-validation-layers/layers/descriptor_sets.cpp