@@ -34,24 +34,6 @@ static Location GetSignaledSemaphoreLocation(const Location& submit_loc, uint32_
3434 return submit_loc.dot (field, index);
3535}
3636
37- static bool FindLayouts (const vvl::Image& image_state, std::vector<VkImageLayout>& layouts) {
38- if (!image_state.layout_map ) {
39- return false ;
40- }
41- const auto & layout_map = *image_state.layout_map ;
42- auto guard = image_state.LayoutMapReadLock ();
43-
44- // TODO: Make this robust for >1 aspect mask. Now it will just say ignore potential errors in this case.
45- if (layout_map.size () > image_state.GetArrayLayers () * image_state.GetMipLevels ()) {
46- return false ;
47- }
48-
49- for (const auto & entry : layout_map) {
50- layouts.emplace_back (entry.second );
51- }
52- return true ;
53- }
54-
5537void QueueSubmissionValidator::Validate (const vvl::QueueSubmission& submission) const {
5638 // Ensure that timeline signals are monotonically increasing values
5739 for (uint32_t i = 0 ; i < (uint32_t )submission.signal_semaphores .size (); ++i) {
@@ -74,39 +56,4 @@ void QueueSubmissionValidator::Validate(const vvl::QueueSubmission& submission)
7456 core_checks.FormatHandle (signal.semaphore ->VkHandle ()).c_str (), signal.payload , current_payload);
7557 }
7658 }
77-
78- // Validate image layouts on the command buffer boundaries
79- {
80- vvl::unordered_map<const vvl::Image*, ImageLayoutMap> local_image_layout_map;
81- for (const vvl::CommandBufferSubmission& cb_submission : submission.cb_submissions ) {
82- auto cb_guard = cb_submission.cb ->ReadLock ();
83- core_checks.ValidateCmdBufImageLayouts (submission.loc .Get (), *cb_submission.cb , local_image_layout_map);
84- }
85- }
86-
87- // Check that image being presented has correct layout
88- if (submission.swapchain ) {
89- std::vector<VkImageLayout> layouts;
90- if (submission.swapchain_image && FindLayouts (*submission.swapchain_image , layouts)) {
91- for (auto layout : layouts) {
92- if (layout != VK_IMAGE_LAYOUT_PRESENT_SRC_KHR && layout != VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR) {
93- core_checks.LogError (
94- " VUID-VkPresentInfoKHR-pImageIndices-01430" , submission.swapchain_image ->Handle (), submission.loc .Get (),
95- " images passed to present must be in layout VK_IMAGE_LAYOUT_PRESENT_SRC_KHR or "
96- " VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR but %s is in %s." ,
97- core_checks.FormatHandle (submission.swapchain_image ->Handle ()).c_str (), string_VkImageLayout (layout));
98- }
99- }
100- }
101- }
102- }
103-
104- void QueueSubmissionValidator::Update (vvl::QueueSubmission& submission) {
105- for (vvl::CommandBufferSubmission& cb_submission : submission.cb_submissions ) {
106- auto cb_guard = cb_submission.cb ->WriteLock ();
107- for (const vvl::CommandBuffer* secondary : cb_submission.cb ->linked_command_buffers ) {
108- core_checks.UpdateCmdBufImageLayouts (*secondary);
109- }
110- core_checks.UpdateCmdBufImageLayouts (*cb_submission.cb );
111- }
11259}
0 commit comments