Skip to content

Commit 3ed5836

Browse files
Add more tests from tracetooltests
Also fix issues with descriptor buffers handling.
1 parent 2bec532 commit 3ed5836

5 files changed

Lines changed: 69 additions & 16 deletions

File tree

CMakeLists.txt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -585,7 +585,11 @@ layer_test(pnext_chain pnext_chain)
585585
#layer_test(as_3 as_3)
586586
#layer_test(as_4 as_4) # crashes
587587
#layer_test(as_5 as_5) # crashes
588+
#layer_test(as_6 as_6)
589+
#layer_test(as_7 as_7)
588590
#layer_test(aliasing_1 aliasing_1) # TBD need to implement aliasing support
591+
#layer_test(aliasing_2 aliasing_2)
592+
#layer_test(aliasing_3 aliasing_3)
589593
layer_test(privatedata privatedata)
590594
layer_test(privatedataext privatedataext)
591595
#layer_test(multidevice_1 multidevice_1) # assert failure on memory type
@@ -598,3 +602,16 @@ layer_test(pipeline_executable_properties pipeline_executable_properties)
598602
layer_test(extended_dynamic_state3 extended_dynamic_state3)
599603
#layer_test(push_descriptor)
600604
layer_test(host_image_copy host_image_copy)
605+
#layer_test(compute_aliasing compute_aliasing)
606+
layer_test(compute_bda_copying_address compute_bda_copying_address)
607+
layer_test(compute_descriptor_buffer compute_descriptor_buffer)
608+
layer_test(descriptor_buffer_mutable_type descriptor_buffer_mutable_type)
609+
layer_test(maintenance7 maintenance7)
610+
layer_test(memory_2 memory_2)
611+
layer_test(memory_2_1 memory_2_1)
612+
layer_test(pipeline_creation_cache_control pipeline_creation_cache_control)
613+
layer_test(stress_1 stress_1)
614+
layer_test(tensors_1 tensors_1)
615+
layer_test(timeline_semaphore_1 timeline_semaphore_1)
616+
layer_test(trace_helpers trace_helpers)
617+
layer_test(updatedescriptor_1 updatedescriptor_1)

scripts/util.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -543,14 +543,14 @@ def print_load(self, name, owner): # called for each parameter
543543
z.do('switch (sptr->type)')
544544
z.brace_begin()
545545
z.do('case VK_DESCRIPTOR_TYPE_SAMPLER: { VkSampler* tmp = reader.pool.allocate<VkSampler>(1); uint32_t index = reader.read_handle(DEBUGPARAM("%s")); *tmp = index_to_VkSampler.at(index); sptr->data.pSampler = tmp; } break;' % self.type)
546-
z.do('case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: opt = reader.read_uint8_t(); if (opt) read_VkDescriptorImageInfo(reader, (VkDescriptorImageInfo*)sptr->data.pCombinedImageSampler); break;')
547-
z.do('case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT: opt = reader.read_uint8_t(); if (opt) read_VkDescriptorImageInfo(reader, (VkDescriptorImageInfo*)sptr->data.pInputAttachmentImage); break;')
548-
z.do('case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE: opt = reader.read_uint8_t(); if (opt) read_VkDescriptorImageInfo(reader, (VkDescriptorImageInfo*)sptr->data.pSampledImage); break;')
549-
z.do('case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE: opt = reader.read_uint8_t(); if (opt) read_VkDescriptorImageInfo(reader, (VkDescriptorImageInfo*)sptr->data.pStorageImage); break;')
550-
z.do('case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER: opt = reader.read_uint8_t(); if (opt) read_VkDescriptorAddressInfoEXT(reader, (VkDescriptorAddressInfoEXT*)sptr->data.pUniformTexelBuffer); break;')
551-
z.do('case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER: opt = reader.read_uint8_t(); if (opt) read_VkDescriptorAddressInfoEXT(reader, (VkDescriptorAddressInfoEXT*)sptr->data.pStorageTexelBuffer); break;')
552-
z.do('case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER: opt = reader.read_uint8_t(); if (opt) read_VkDescriptorAddressInfoEXT(reader, (VkDescriptorAddressInfoEXT*)sptr->data.pUniformBuffer); break;')
553-
z.do('case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER: opt = reader.read_uint8_t(); if (opt) read_VkDescriptorAddressInfoEXT(reader, (VkDescriptorAddressInfoEXT*)sptr->data.pStorageBuffer); break;')
546+
z.do('case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: opt = reader.read_uint8_t(); if (opt) { auto* tmp = reader.pool.allocate<VkDescriptorImageInfo>(1); sptr->data.pCombinedImageSampler = tmp; read_VkDescriptorImageInfo(reader, tmp); } else { sptr->data.pCombinedImageSampler = nullptr; } break;')
547+
z.do('case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT: opt = reader.read_uint8_t(); if (opt) { auto* tmp = reader.pool.allocate<VkDescriptorImageInfo>(1); sptr->data.pInputAttachmentImage = tmp; read_VkDescriptorImageInfo(reader, tmp); } else { sptr->data.pInputAttachmentImage = nullptr; } break;')
548+
z.do('case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE: opt = reader.read_uint8_t(); if (opt) { auto* tmp = reader.pool.allocate<VkDescriptorImageInfo>(1); sptr->data.pSampledImage = tmp; read_VkDescriptorImageInfo(reader, tmp); } else { sptr->data.pSampledImage = nullptr; } break;')
549+
z.do('case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE: opt = reader.read_uint8_t(); if (opt) { auto* tmp = reader.pool.allocate<VkDescriptorImageInfo>(1); sptr->data.pStorageImage = tmp; read_VkDescriptorImageInfo(reader, tmp); } else { sptr->data.pStorageImage = nullptr; } break;')
550+
z.do('case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER: opt = reader.read_uint8_t(); if (opt) { auto* tmp = reader.pool.allocate<VkDescriptorAddressInfoEXT>(1); sptr->data.pUniformTexelBuffer = tmp; read_VkDescriptorAddressInfoEXT(reader, tmp); } else { sptr->data.pUniformTexelBuffer = nullptr; } break;')
551+
z.do('case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER: opt = reader.read_uint8_t(); if (opt) { auto* tmp = reader.pool.allocate<VkDescriptorAddressInfoEXT>(1); sptr->data.pStorageTexelBuffer = tmp; read_VkDescriptorAddressInfoEXT(reader, tmp); } else { sptr->data.pStorageTexelBuffer = nullptr; } break;')
552+
z.do('case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER: opt = reader.read_uint8_t(); if (opt) { auto* tmp = reader.pool.allocate<VkDescriptorAddressInfoEXT>(1); sptr->data.pUniformBuffer = tmp; read_VkDescriptorAddressInfoEXT(reader, tmp); } else { sptr->data.pUniformBuffer = nullptr; } break;')
553+
z.do('case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER: opt = reader.read_uint8_t(); if (opt) { auto* tmp = reader.pool.allocate<VkDescriptorAddressInfoEXT>(1); sptr->data.pStorageBuffer = tmp; read_VkDescriptorAddressInfoEXT(reader, tmp); } else { sptr->data.pStorageBuffer = nullptr; } break;')
554554
z.do('case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR:')
555555
z.brace_begin()
556556
z.do('uint64_t stored_address = reader.read_uint64_t();')
@@ -1003,7 +1003,7 @@ def print_save(self, name, owner, postprocess = False): # called for each parame
10031003
z.do('auto* image_data = writer.parent->records.VkImage_index.at(pImageMemoryBarriers->image);')
10041004
z.do('commandbuffer_data->touch(image_data, 0, image_data->size, __LINE__);')
10051005
z.loop_end()
1006-
elif self.funcname in [ 'vkCmdBeginRendering' ] and not postprocess:
1006+
elif self.funcname in [ 'vkCmdBeginRendering', 'vkCmdBeginRenderingKHR' ] and not postprocess:
10071007
z.do('for (unsigned ii = 0; ii < pRenderingInfo->colorAttachmentCount; ii++)')
10081008
z.loop_begin()
10091009
z.do('if (pRenderingInfo->pColorAttachments[ii].loadOp == VK_ATTACHMENT_LOAD_OP_LOAD)')

src/hardcode_read.cpp

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1313,6 +1313,21 @@ static void handle_VkWriteDescriptorSets(lava_file_reader& reader, uint32_t desc
13131313
}
13141314
}
13151315

1316+
static void handle_VkCopyDescriptorSets(lava_file_reader& reader, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies)
1317+
{
1318+
if (descriptorCopyCount == 0 || !pDescriptorCopies) return;
1319+
1320+
for (unsigned i = 0; i < descriptorCopyCount; i++)
1321+
{
1322+
const uint32_t src_index = index_to_VkDescriptorSet.index(pDescriptorCopies[i].srcSet);
1323+
auto& src = VkDescriptorSet_index.at(src_index);
1324+
const uint32_t dst_index = index_to_VkDescriptorSet.index(pDescriptorCopies[i].dstSet);
1325+
auto& dst = VkDescriptorSet_index.at(dst_index);
1326+
for (const auto& pair : src.bound_buffers) dst.bound_buffers[pair.first] = pair.second;
1327+
for (const auto& pair : src.dynamic_buffers) dst.dynamic_buffers[pair.first] = pair.second;
1328+
}
1329+
}
1330+
13161331
void replay_postprocess_vkCmdPushDescriptorSetKHR(lava_file_reader& reader, VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites)
13171332
{
13181333
assert(false);
@@ -1332,9 +1347,7 @@ void replay_postprocess_vkCmdPushDescriptorSet2KHR(lava_file_reader& reader, VkC
13321347
void replay_postprocess_vkUpdateDescriptorSets(lava_file_reader& reader, VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies)
13331348
{
13341349
handle_VkWriteDescriptorSets(reader, descriptorWriteCount, pDescriptorWrites, true);
1335-
1336-
// TBD handle copy
1337-
assert(descriptorCopyCount == 0);
1350+
handle_VkCopyDescriptorSets(reader, descriptorCopyCount, pDescriptorCopies);
13381351
}
13391352

13401353
void replay_postprocess_vkCmdBindDescriptorSets(lava_file_reader& reader, VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout,

src/hardcode_write.cpp

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,31 @@ static void handle_VkWriteDescriptorSets(lava_file_writer& writer, uint32_t desc
637637
}
638638
}
639639

640+
static void merge_descriptor_touched(trackeddescriptorset_trace* dst, const trackeddescriptorset_trace* src)
641+
{
642+
for (const auto& pair : src->touched)
643+
{
644+
if (dst->touched.count(pair.first) > 0)
645+
{
646+
for (const auto& r : pair.second.list()) dst->touched[pair.first].add(r.first, r.last);
647+
}
648+
else dst->touched[pair.first] = pair.second;
649+
}
650+
}
651+
652+
static void handle_VkCopyDescriptorSets(lava_file_writer& writer, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies)
653+
{
654+
if (descriptorCopyCount == 0 || !pDescriptorCopies) return;
655+
656+
for (unsigned i = 0; i < descriptorCopyCount; i++)
657+
{
658+
auto* src = writer.parent->records.VkDescriptorSet_index.at(pDescriptorCopies[i].srcSet);
659+
auto* dst = writer.parent->records.VkDescriptorSet_index.at(pDescriptorCopies[i].dstSet);
660+
merge_descriptor_touched(dst, src);
661+
if (dst->dynamic_buffers.empty() && !src->dynamic_buffers.empty()) dst->dynamic_buffers = src->dynamic_buffers;
662+
}
663+
}
664+
640665
static void trace_post_vkCmdPushDescriptorSetKHR(lava_file_writer& writer, VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites)
641666
{
642667
handle_VkWriteDescriptorSets(writer, descriptorWriteCount, pDescriptorWrites, false, true);
@@ -650,9 +675,7 @@ static void trace_post_vkCmdPushDescriptorSet2KHR(lava_file_writer& writer, VkCo
650675
static void trace_post_vkUpdateDescriptorSets(lava_file_writer& writer, VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies)
651676
{
652677
handle_VkWriteDescriptorSets(writer, descriptorWriteCount, pDescriptorWrites, true, false);
653-
654-
// TBD handle copy
655-
assert(descriptorCopyCount == 0);
678+
handle_VkCopyDescriptorSets(writer, descriptorCopyCount, pDescriptorCopies);
656679
}
657680

658681
// combine all updates for each memory into one update list for each device memory object, so we keep the number of map operations to a minimum

0 commit comments

Comments
 (0)