Skip to content

Commit 2887de9

Browse files
Add test markers
The new functions test_marker() and test_marker_mention() now allow us to inject markers into the Vulkan command stream for our tests to more easily identify where we are in the test when things fail.
1 parent 2a6cd04 commit 2887de9

9 files changed

Lines changed: 159 additions & 12 deletions

File tree

scripts/util.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ def validate_funcs(lst):
145145
'vkQueueSubmit', 'vkQueueSubmit2', 'vkQueueSubmit2KHR', 'vkDestroyPipelineCache', 'vkDestroySwapchainKHR', 'vkCreateInstance' ]
146146
validate_funcs(replay_pre_calls)
147147
replay_post_calls = [ 'vkCreateInstance', 'vkDestroyInstance', 'vkQueuePresentKHR', 'vkAcquireNextImageKHR', 'vkAcquireNextImage2KHR',
148-
'vkGetBufferDeviceAddress', 'vkGetBufferDeviceAddressKHR', 'vkGetAccelerationStructureDeviceAddressKHR' ]
148+
'vkGetBufferDeviceAddress', 'vkGetBufferDeviceAddressKHR', 'vkGetAccelerationStructureDeviceAddressKHR', 'vkSubmitDebugUtilsMessageEXT' ]
149149
validate_funcs(replay_post_calls)
150150
replay_postprocess_calls = [ 'vkCmdPushConstants', 'vkCmdPushConstants2KHR', 'vkCreateRayTracingPipelinesKHR', 'vkCreateGraphicsPipelines',
151151
'vkCreateComputePipelines', 'vkCmdBindPipeline', 'vkQueueSubmit', 'vkQueueSubmit2', 'vkQueueSubmit2KHR', 'vkCmdBindDescriptorSets2KHR',
@@ -164,7 +164,7 @@ def validate_funcs(lst):
164164
'vkGetDeviceImageMemoryRequirements', 'vkGetDeviceImageMemoryRequirementsKHR', 'vkGetPhysicalDeviceFeatures2', 'vkGetPhysicalDeviceFeatures2KHR',
165165
'vkGetPhysicalDeviceMemoryProperties2', 'vkGetDeviceImageSparseMemoryRequirementsKHR', 'vkGetDeviceImageSparseMemoryRequirements',
166166
'vkCreateShaderModule', 'vkGetBufferDeviceAddress', 'vkGetBufferDeviceAddressKHR', 'vkGetAccelerationStructureDeviceAddressKHR',
167-
'vkCmdBindDescriptorSets2KHR', 'vkCmdBindDescriptorSets2', 'vkGetTensorMemoryRequirementsARM', 'vkBindTensorMemoryARM' ]
167+
'vkCmdBindDescriptorSets2KHR', 'vkCmdBindDescriptorSets2', 'vkGetTensorMemoryRequirementsARM', 'vkBindTensorMemoryARM', 'vkSubmitDebugUtilsMessageEXT' ]
168168
validate_funcs(trace_post_calls)
169169
skip_post_calls = [ 'vkGetQueryPoolResults', 'vkGetPhysicalDeviceXcbPresentationSupportKHR' ]
170170
validate_funcs(skip_post_calls)
@@ -1043,9 +1043,9 @@ def print_save(self, name, owner, postprocess = False): # called for each parame
10431043
if self.funcname == 'vkEndCommandBuffer':
10441044
z.do('commandbuffer_data->last_modified = writer.current;')
10451045
if self.funcname == 'VkDebugMarkerObjectNameInfoEXT' and self.name == 'pObjectName':
1046-
z.do('object_data->name = sptr->pObjectName;')
1046+
z.do('if (sptr->pObjectName) object_data->name = sptr->pObjectName;')
10471047
if self.funcname == 'VkDebugUtilsObjectNameInfoEXT' and self.name == 'pObjectName':
1048-
z.do('object_data->name = sptr->pObjectName;')
1048+
z.do('if (sptr->pObjectName) object_data->name = sptr->pObjectName;')
10491049
if self.type == 'VkDevice' and self.funcname[0] == 'v' and self.name == 'device':
10501050
z.do('writer.device = device;')
10511051
z.do('writer.physicalDevice = device_data->physicalDevice;')

src/hardcode_read.cpp

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,75 @@ static uint64_t object_lookup(VkObjectType type, uint32_t index)
201201
return 0;
202202
}
203203

204+
static trackable& object_trackable(VkObjectType type, uint64_t handle)
205+
{
206+
static trackable dummy;
207+
switch (type)
208+
{
209+
case VK_OBJECT_TYPE_INSTANCE: return VkInstance_index.at(index_to_VkInstance.index(stored_instance));
210+
case VK_OBJECT_TYPE_PHYSICAL_DEVICE: return VkPhysicalDevice_index.at(index_to_VkPhysicalDevice.index(selected_physical_device));
211+
case VK_OBJECT_TYPE_DEVICE: return VkDevice_index.at(index_to_VkDevice.index((VkDevice)handle));
212+
case VK_OBJECT_TYPE_QUEUE: return VkQueue_index.at(index_to_VkQueue.index((VkQueue)handle));
213+
case VK_OBJECT_TYPE_DEVICE_MEMORY: assert(false); return dummy;
214+
case VK_OBJECT_TYPE_SEMAPHORE: return VkSemaphore_index.at(index_to_VkSemaphore.index((VkSemaphore)handle));
215+
case VK_OBJECT_TYPE_COMMAND_BUFFER: return VkCommandBuffer_index.at(index_to_VkCommandBuffer.index((VkCommandBuffer)handle));
216+
case VK_OBJECT_TYPE_FENCE: return VkFence_index.at(index_to_VkFence.index((VkFence)handle));
217+
case VK_OBJECT_TYPE_BUFFER: return VkBuffer_index.at(index_to_VkBuffer.index((VkBuffer)handle));
218+
case VK_OBJECT_TYPE_IMAGE: return VkImage_index.at(index_to_VkImage.index((VkImage)handle));
219+
case VK_OBJECT_TYPE_EVENT: return VkEvent_index.at(index_to_VkEvent.index((VkEvent)handle));
220+
case VK_OBJECT_TYPE_QUERY_POOL: return VkQueryPool_index.at(index_to_VkQueryPool.index((VkQueryPool)handle));
221+
case VK_OBJECT_TYPE_BUFFER_VIEW: return VkBufferView_index.at(index_to_VkBufferView.index((VkBufferView)handle));
222+
case VK_OBJECT_TYPE_IMAGE_VIEW: return VkImageView_index.at(index_to_VkImageView.index((VkImageView)handle));
223+
case VK_OBJECT_TYPE_SHADER_MODULE: return VkShaderModule_index.at(index_to_VkShaderModule.index((VkShaderModule)handle));
224+
case VK_OBJECT_TYPE_PIPELINE_CACHE: return VkPipelineCache_index.at(index_to_VkPipelineCache.index((VkPipelineCache)handle));
225+
case VK_OBJECT_TYPE_PIPELINE_LAYOUT: return VkPipelineLayout_index.at(index_to_VkPipelineLayout.index((VkPipelineLayout)handle));
226+
case VK_OBJECT_TYPE_RENDER_PASS: return VkRenderPass_index.at(index_to_VkRenderPass.index((VkRenderPass)handle));
227+
case VK_OBJECT_TYPE_PIPELINE: return VkPipeline_index.at(index_to_VkPipeline.index((VkPipeline)handle));
228+
case VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT: return VkDescriptorSetLayout_index.at(index_to_VkDescriptorSetLayout.index((VkDescriptorSetLayout)handle));
229+
case VK_OBJECT_TYPE_SAMPLER: return VkSampler_index.at(index_to_VkSampler.index((VkSampler)handle));
230+
case VK_OBJECT_TYPE_DESCRIPTOR_POOL: return VkDescriptorPool_index.at(index_to_VkDescriptorPool.index((VkDescriptorPool)handle));
231+
case VK_OBJECT_TYPE_DESCRIPTOR_SET: return VkDescriptorSet_index.at(index_to_VkDescriptorSet.index((VkDescriptorSet)handle));
232+
case VK_OBJECT_TYPE_FRAMEBUFFER: return VkFramebuffer_index.at(index_to_VkFramebuffer.index((VkFramebuffer)handle));
233+
case VK_OBJECT_TYPE_COMMAND_POOL: return VkCommandPool_index.at(index_to_VkCommandPool.index((VkCommandPool)handle));
234+
case VK_OBJECT_TYPE_SURFACE_KHR: return VkSurfaceKHR_index.at(index_to_VkSurfaceKHR.index((VkSurfaceKHR)handle));
235+
case VK_OBJECT_TYPE_SWAPCHAIN_KHR: return VkSwapchainKHR_index.at(index_to_VkSwapchainKHR.index((VkSwapchainKHR)handle));
236+
case VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE: return VkDescriptorUpdateTemplate_index.at(index_to_VkDescriptorUpdateTemplate.index((VkDescriptorUpdateTemplate)handle));
237+
case VK_OBJECT_TYPE_PRIVATE_DATA_SLOT: return VkPrivateDataSlot_index.at(index_to_VkPrivateDataSlot.index((VkPrivateDataSlot)handle));
238+
case VK_OBJECT_TYPE_DISPLAY_KHR: return VkDisplayKHR_index.at(index_to_VkDisplayKHR.index((VkDisplayKHR)handle));
239+
case VK_OBJECT_TYPE_DISPLAY_MODE_KHR: return VkDisplayModeKHR_index.at(index_to_VkDisplayModeKHR.index((VkDisplayModeKHR)handle));
240+
case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR: return VkAccelerationStructureKHR_index.at(index_to_VkAccelerationStructureKHR.index((VkAccelerationStructureKHR)handle));
241+
case VK_OBJECT_TYPE_VALIDATION_CACHE_EXT: return VkValidationCacheEXT_index.at(index_to_VkValidationCacheEXT.index((VkValidationCacheEXT)handle));
242+
case VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR: return VkDeferredOperationKHR_index.at(index_to_VkDeferredOperationKHR.index((VkDeferredOperationKHR)handle));
243+
case VK_OBJECT_TYPE_MICROMAP_EXT: return VkMicromapEXT_index.at(index_to_VkMicromapEXT.index((VkMicromapEXT)handle));
244+
case VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR: return VkSamplerYcbcrConversion_index.at(index_to_VkSamplerYcbcrConversion.index((VkSamplerYcbcrConversion)handle));
245+
case VK_OBJECT_TYPE_VIDEO_SESSION_KHR: return VkVideoSessionKHR_index.at(index_to_VkVideoSessionKHR.index((VkVideoSessionKHR)handle));
246+
case VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR: return VkVideoSessionParametersKHR_index.at(index_to_VkVideoSessionParametersKHR.index((VkVideoSessionParametersKHR)handle));
247+
case VK_OBJECT_TYPE_SHADER_EXT: return VkShaderEXT_index.at(index_to_VkShaderEXT.index((VkShaderEXT)handle));
248+
case VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT: return VkDebugReportCallbackEXT_index.at(index_to_VkDebugReportCallbackEXT.index((VkDebugReportCallbackEXT)handle));
249+
case VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT: return VkDebugUtilsMessengerEXT_index.at(index_to_VkDebugUtilsMessengerEXT.index((VkDebugUtilsMessengerEXT)handle));
250+
case VK_OBJECT_TYPE_TENSOR_ARM: return VkTensorARM_index.at(index_to_VkTensorARM.index((VkTensorARM)handle));
251+
case VK_OBJECT_TYPE_TENSOR_VIEW_ARM: return VkTensorViewARM_index.at(index_to_VkTensorViewARM.index((VkTensorViewARM)handle));
252+
case VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM: return VkDataGraphPipelineSessionARM_index.at(index_to_VkDataGraphPipelineSessionARM.index((VkDataGraphPipelineSessionARM)handle));
253+
254+
// these are not supported:
255+
case VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV:
256+
case VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV:
257+
case VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA:
258+
case VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV:
259+
case VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL:
260+
case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV:
261+
case VK_OBJECT_TYPE_CU_FUNCTION_NVX:
262+
case VK_OBJECT_TYPE_CU_MODULE_NVX:
263+
case VK_OBJECT_TYPE_PIPELINE_BINARY_KHR:
264+
case VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT:
265+
case VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT:
266+
case VK_OBJECT_TYPE_UNKNOWN:
267+
case VK_OBJECT_TYPE_MAX_ENUM: assert(false); return dummy;
268+
}
269+
assert(false);
270+
return dummy;
271+
}
272+
204273
void replay_pre_vkQueueSubmit2(lava_file_reader& reader, VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence)
205274
{
206275
for (uint32_t i = 0; i < submitCount; i++)
@@ -341,6 +410,24 @@ static void replay_pre_vkDestroySwapchainKHR(lava_file_reader& reader, VkDevice
341410
wrap_vkDestroySemaphore(device, t.virtual_semaphore, nullptr);
342411
}
343412

413+
static void replay_post_vkSubmitDebugUtilsMessageEXT(lava_file_reader& reader,
414+
VkInstance instance,
415+
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
416+
VkDebugUtilsMessageTypeFlagsEXT messageTypes,
417+
const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
418+
{
419+
if (!pCallbackData) return;
420+
if (pCallbackData->pObjects && pCallbackData->objectCount > 0 && pCallbackData->pMessage)
421+
{
422+
trackable& t = object_trackable(pCallbackData->pObjects[0].objectType, pCallbackData->pObjects[0].objectHandle);
423+
DLOG("Marker for %s[%d]: " MAKEBLUE("%s"), pretty_print_VkObjectType(pCallbackData->pObjects[0].objectType), (int)t.index, pCallbackData->pMessage);
424+
}
425+
else if (pCallbackData->pMessage)
426+
{
427+
DLOG("Marker:" MAKEBLUE("%s"), pCallbackData->pMessage);
428+
}
429+
}
430+
344431
static void replay_post_vkGetAccelerationStructureDeviceAddressKHR(lava_file_reader& reader, VkDeviceAddress result, VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
345432
{
346433
const uint32_t as_index = index_to_VkAccelerationStructureKHR.index(pInfo->accelerationStructure);

src/hardcode_write.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,24 @@ static trackable* object_trackable(const trace_records& r, VkObjectType type, ui
144144
return nullptr;
145145
}
146146

147+
static void trace_post_vkSubmitDebugUtilsMessageEXT(lava_file_writer& writer,
148+
VkInstance instance,
149+
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
150+
VkDebugUtilsMessageTypeFlagsEXT messageTypes,
151+
const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData)
152+
{
153+
if (!pCallbackData) return;
154+
if (pCallbackData->pObjects && pCallbackData->objectCount > 0 && pCallbackData->pMessage)
155+
{
156+
trackable* t = object_trackable(writer.parent->records, pCallbackData->pObjects[0].objectType, pCallbackData->pObjects[0].objectHandle);
157+
DLOG("Marker for %s[%d]: " MAKEBLUE("%s"), pretty_print_VkObjectType(pCallbackData->pObjects[0].objectType), (int)t->index, pCallbackData->pMessage);
158+
}
159+
else if (pCallbackData->pMessage)
160+
{
161+
DLOG("Marker: " MAKEBLUE("%s"), pCallbackData->pMessage);
162+
}
163+
}
164+
147165
static void trace_post_vkGetAccelerationStructureDeviceAddressKHR(lava_file_writer& writer, VkDeviceAddress result, VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo)
148166
{
149167
auto* data = writer.parent->records.VkAccelerationStructureKHR_index.at(pInfo->accelerationStructure);

src/util.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,20 @@
3434
#define DEBUGPARAM(x)
3535
#endif
3636

37+
#define BLUE "\x1B[34m"
38+
#define RED "\x1B[31m"
39+
#define GREEN "\x1B[32m"
40+
#define YELLOW "\x1B[33m"
41+
#define MAGENTA "\x1B[35m"
42+
#define CYAN "\x1B[36m"
43+
#define RESET "\x1B[0m"
44+
#define MAKEBLUE(x) BLUE x RESET
45+
#define MAKERED(x) RED x RESET
46+
#define MAKEGREEN(x) GREEN x RESET
47+
#define MAKEYELLOW(x) YELLOW x RESET
48+
#define MAKEMAGENTA(x) MAGENTA x RESET
49+
#define MAKECYAN(x) CYAN x RESET
50+
3751
#define likely(x) __builtin_expect((x),1)
3852
#define unlikely(x) __builtin_expect((x),0)
3953

tests/common.cpp

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,27 @@
33

44
static VkPhysicalDeviceMemoryProperties memory_properties = {};
55

6+
void test_marker(const vulkan_setup_t& vulkan, const std::string& text)
7+
{
8+
VkDebugUtilsMessengerCallbackDataEXT dumc = { VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT, nullptr };
9+
dumc.pMessage = text.c_str();
10+
trace_vkSubmitDebugUtilsMessageEXT(vulkan.instance, VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT, VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT, &dumc);
11+
}
12+
13+
void test_marker_mention(const vulkan_setup_t& vulkan, const std::string& text, VkObjectType type, uint64_t handle)
14+
{
15+
assert(type != VK_OBJECT_TYPE_DEVICE_MEMORY); // don't do this
16+
VkDebugUtilsMessengerCallbackDataEXT dumc = { VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT, nullptr };
17+
dumc.pMessage = text.c_str();
18+
dumc.objectCount = 1;
19+
VkDebugUtilsObjectNameInfoEXT duoni = { VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT, nullptr };
20+
duoni.objectType = type;
21+
duoni.objectHandle = handle;
22+
duoni.pObjectName = nullptr; // we will not override the given name of the object
23+
dumc.pObjects = &duoni;
24+
trace_vkSubmitDebugUtilsMessageEXT(vulkan.instance, VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT, VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT, &dumc);
25+
}
26+
627
static VkBool32 report_callback(
728
VkDebugReportFlagsEXT flags,
829
VkDebugReportObjectTypeEXT objectType,
@@ -18,7 +39,7 @@ static VkBool32 report_callback(
1839
return VK_TRUE;
1940
}
2041

21-
void print_cmdbuf(vulkan_setup_t& vulkan, VkCommandBuffer cmdbuf)
42+
void print_cmdbuf(const vulkan_setup_t& vulkan, VkCommandBuffer cmdbuf)
2243
{
2344
const unsigned index = trace_vkGetDeviceTracingObjectPropertyTRACETOOLTEST(vulkan.device, VK_OBJECT_TYPE_COMMAND_BUFFER, (uint64_t)cmdbuf, VK_TRACING_OBJECT_PROPERTY_INDEX_TRACETOOLTEST);
2445
const unsigned objs = trace_vkGetDeviceTracingObjectPropertyTRACETOOLTEST(vulkan.device, VK_OBJECT_TYPE_COMMAND_BUFFER, (uint64_t)cmdbuf, VK_TRACING_OBJECT_PROPERTY_MARKED_OBJECTS_TRACETOOLTEST);
@@ -31,7 +52,7 @@ void print_cmdbuf(vulkan_setup_t& vulkan, VkCommandBuffer cmdbuf)
3152
printf("cmdbuf[%u] touched(objs=%u ranges=%u bytes=%u) objects(updates=%u bytes=%u) pool=%u\n", index, objs, ranges, bytes, updates, written, poolindex);
3253
}
3354

34-
void print_memory(vulkan_setup_t& vulkan, VkDeviceMemory memory, const char* name)
55+
void print_memory(const vulkan_setup_t& vulkan, VkDeviceMemory memory, const char* name)
3556
{
3657
const unsigned index = trace_vkGetDeviceTracingObjectPropertyTRACETOOLTEST(vulkan.device, VK_OBJECT_TYPE_DEVICE_MEMORY, (uint64_t)memory, VK_TRACING_OBJECT_PROPERTY_INDEX_TRACETOOLTEST);
3758
const unsigned ranges = trace_vkGetDeviceTracingObjectPropertyTRACETOOLTEST(vulkan.device, VK_OBJECT_TYPE_DEVICE_MEMORY, (uint64_t)memory, VK_TRACING_OBJECT_PROPERTY_MARKED_RANGES_TRACETOOLTEST);
@@ -40,7 +61,7 @@ void print_memory(vulkan_setup_t& vulkan, VkDeviceMemory memory, const char* nam
4061
printf("%s : memory[%u] size=%u exposed(ranges=%u bytes=%u)\n", name, index, size, ranges, bytes);
4162
}
4263

43-
void print_buffer(vulkan_setup_t& vulkan, VkBuffer buffer)
64+
void print_buffer(const vulkan_setup_t& vulkan, VkBuffer buffer)
4465
{
4566
const unsigned index = trace_vkGetDeviceTracingObjectPropertyTRACETOOLTEST(vulkan.device, VK_OBJECT_TYPE_BUFFER, (uint64_t)buffer, VK_TRACING_OBJECT_PROPERTY_INDEX_TRACETOOLTEST);
4667
const unsigned count = trace_vkGetDeviceTracingObjectPropertyTRACETOOLTEST(vulkan.device, VK_OBJECT_TYPE_BUFFER, (uint64_t)buffer, VK_TRACING_OBJECT_PROPERTY_UPDATES_COUNT_TRACETOOLTEST);

tests/common.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,12 @@ uint32_t get_device_memory_type(uint32_t type_filter, VkMemoryPropertyFlags prop
4040
void test_set_name(VkDevice device, VkObjectType type, uint64_t handle, const char* name);
4141
void testFlushMemory(const vulkan_setup_t& vulkan, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, bool extra, VkMarkedOffsetsARM* markings);
4242

43-
void print_cmdbuf(vulkan_setup_t& vulkan, VkCommandBuffer cmdbuf);
44-
void print_memory(vulkan_setup_t& vulkan, VkDeviceMemory memory, const char* name);
45-
void print_buffer(vulkan_setup_t& vulkan, VkBuffer buffer);
43+
void test_marker(const vulkan_setup_t& vulkan, const std::string& text);
44+
void test_marker_mention(const vulkan_setup_t& vulkan, const std::string& text, VkObjectType type, uint64_t handle);
45+
46+
void print_cmdbuf(const vulkan_setup_t& vulkan, VkCommandBuffer cmdbuf);
47+
void print_memory(const vulkan_setup_t& vulkan, VkDeviceMemory memory, const char* name);
48+
void print_buffer(const vulkan_setup_t& vulkan, VkBuffer buffer);
4649

4750
// Prior assumption: Memory is not already mapped.
4851
static inline void test_destroy_buffer(vulkan_setup_t& vulkan, unsigned value, VkDeviceMemory memory, VkBuffer buffer, VkDeviceSize offset, VkDeviceSize size)

tests/tracing_alignment.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ static void trace()
7171

7272
trace_alignments[index] = traced_req.alignment;
7373
buffer_indices.push_back(index);
74+
test_marker_mention(vulkan, std::to_string(i) + " : testing alignment " + std::to_string(raw_req.alignment), VK_OBJECT_TYPE_BUFFER, (uint64_t)buffer);
7475
trace_vkDestroyBuffer(vulkan.device, buffer, nullptr);
75-
ILOG("Trace %d align=%d buffer=%lu", (int)index, (int)raw_req.alignment, (unsigned long)buffer);
7676
}
7777
test_done(vulkan);
7878
}

tests/tracing_buffers.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ static void trace()
2222
PFN_vkAssertBufferARM vkAssertBuffer = (PFN_vkAssertBufferARM)trace_vkGetDeviceProcAddr(vulkan.device, "vkAssertBufferARM");
2323
assert(vkAssertBuffer != nullptr);
2424

25+
test_marker(vulkan, "Creating buffers");
2526
VkBuffer buffer[3];
2627
VkBufferCreateInfo bufferCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, nullptr };
2728
bufferCreateInfo.size = 99;
@@ -60,13 +61,15 @@ static void trace()
6061
check(result);
6162
assert(memory != 0);
6263

64+
test_marker(vulkan, "Binding buffers");
6365
trace_vkBindBufferMemory(vulkan.device, buffer[0], memory, 0);
6466
ILOG("Binding to %d - alignment %d", (int)0, (int)req[0].alignment);
6567
trace_vkBindBufferMemory(vulkan.device, buffer[1], memory, aligned_size[0]);
6668
ILOG("Binding to %d - alignment %d", (int)aligned_size[0], (int)req[1].alignment);
6769
trace_vkBindBufferMemory(vulkan.device, buffer[2], memory, aligned_size[0] + aligned_size[1]);
6870
ILOG("Binding to %d - alignment %d", (int)(aligned_size[0] + aligned_size[1]), (int)req[2].alignment);
6971

72+
test_marker(vulkan, "Filling buffers");
7073
char* ptr = nullptr;
7174
result = trace_vkMapMemory(vulkan.device, memory, 0, pAllocateMemInfo.allocationSize, 0, (void**)&ptr);
7275
check(result);
@@ -81,6 +84,7 @@ static void trace()
8184
trace_vkFlushMappedMemoryRanges(vulkan.device, 1, &flush);
8285
trace_vkUnmapMemory(vulkan.device, memory);
8386

87+
test_marker(vulkan, "Asserting buffers");
8488
uint32_t checksum = 0;
8589
result = trace_vkAssertBufferARM(vulkan.device, buffer[0], 0, VK_WHOLE_SIZE, &checksum, nullptr);
8690
check(result);

0 commit comments

Comments
 (0)