+ s << "\thandleTypes = " << getExternalFenceHandleTypeFlagsKHRStr(value.handleTypes) << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImportFenceWin32HandleInfoKHR& value)
+{
+ s << "VkImportFenceWin32HandleInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tfence = " << value.fence << '\n';
+ s << "\tflags = " << getFenceImportFlagsKHRStr(value.flags) << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
+ s << "\thandle = " << value.handle << '\n';
+ s << "\tname = " << getCharPtrStr(value.name) << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExportFenceWin32HandleInfoKHR& value)
+{
+ s << "VkExportFenceWin32HandleInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tpAttributes = " << value.pAttributes << '\n';
+ s << "\tdwAccess = " << value.dwAccess << '\n';
+ s << "\tname = " << getCharPtrStr(value.name) << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkFenceGetWin32HandleInfoKHR& value)
+{
+ s << "VkFenceGetWin32HandleInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tfence = " << value.fence << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImportFenceFdInfoKHR& value)
+{
+ s << "VkImportFenceFdInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tfence = " << value.fence << '\n';
+ s << "\tflags = " << getFenceImportFlagsKHRStr(value.flags) << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
+ s << "\tfd = " << value.fd << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkFenceGetFdInfoKHR& value)
+{
+ s << "VkFenceGetFdInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tfence = " << value.fence << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkMemoryDedicatedRequirementsKHR& value)
+{
+ s << "VkMemoryDedicatedRequirementsKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tprefersDedicatedAllocation = " << value.prefersDedicatedAllocation << '\n';
+ s << "\trequiresDedicatedAllocation = " << value.requiresDedicatedAllocation << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkMemoryDedicatedAllocateInfoKHR& value)
+{
+ s << "VkMemoryDedicatedAllocateInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\timage = " << value.image << '\n';
+ s << "\tbuffer = " << value.buffer << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkBufferMemoryRequirementsInfo2KHR& value)
+{
+ s << "VkBufferMemoryRequirementsInfo2KHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tbuffer = " << value.buffer << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImageMemoryRequirementsInfo2KHR& value)
+{
+ s << "VkImageMemoryRequirementsInfo2KHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\timage = " << value.image << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImageSparseMemoryRequirementsInfo2KHR& value)
+{
+ s << "VkImageSparseMemoryRequirementsInfo2KHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\timage = " << value.image << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements2KHR& value)
+{
+ s << "VkMemoryRequirements2KHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tmemoryRequirements = " << value.memoryRequirements << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements2KHR& value)
+{
+ s << "VkSparseImageMemoryRequirements2KHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tmemoryRequirements = " << value.memoryRequirements << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImageFormatListCreateInfoKHR& value)
+{
+ s << "VkImageFormatListCreateInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
+ s << "\tpViewFormats = " << value.pViewFormats << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkDebugReportCallbackCreateInfoEXT& value)
+{
+ s << "VkDebugReportCallbackCreateInfoEXT = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tflags = " << getDebugReportFlagsEXTStr(value.flags) << '\n';
+ s << "\tpfnCallback = " << value.pfnCallback << '\n';
+ s << "\tpUserData = " << value.pUserData << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkRenderPassMultiviewCreateInfoKHX& value)
+{
+ s << "VkRenderPassMultiviewCreateInfoKHX = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tsubpassCount = " << value.subpassCount << '\n';
+ s << "\tpViewMasks = " << value.pViewMasks << '\n';
+ s << "\tdependencyCount = " << value.dependencyCount << '\n';
+ s << "\tpViewOffsets = " << value.pViewOffsets << '\n';
+ s << "\tcorrelationMaskCount = " << value.correlationMaskCount << '\n';
+ s << "\tpCorrelationMasks = " << value.pCorrelationMasks << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewFeaturesKHX& value)
+{
+ s << "VkPhysicalDeviceMultiviewFeaturesKHX = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tmultiview = " << value.multiview << '\n';
+ s << "\tmultiviewGeometryShader = " << value.multiviewGeometryShader << '\n';
+ s << "\tmultiviewTessellationShader = " << value.multiviewTessellationShader << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewPropertiesKHX& value)
+{
+ s << "VkPhysicalDeviceMultiviewPropertiesKHX = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tmaxMultiviewViewCount = " << value.maxMultiviewViewCount << '\n';
+ s << "\tmaxMultiviewInstanceIndex = " << value.maxMultiviewInstanceIndex << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExternalMemoryPropertiesKHR& value)
+{
+ s << "VkExternalMemoryPropertiesKHR = {\n";
+ s << "\texternalMemoryFeatures = " << getExternalMemoryFeatureFlagsKHRStr(value.externalMemoryFeatures) << '\n';
+ s << "\texportFromImportedHandleTypes = " << getExternalMemoryHandleTypeFlagsKHRStr(value.exportFromImportedHandleTypes) << '\n';
+ s << "\tcompatibleHandleTypes = " << getExternalMemoryHandleTypeFlagsKHRStr(value.compatibleHandleTypes) << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalImageFormatInfoKHR& value)
+{
+ s << "VkPhysicalDeviceExternalImageFormatInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExternalImageFormatPropertiesKHR& value)
+{
+ s << "VkExternalImageFormatPropertiesKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\texternalMemoryProperties = " << value.externalMemoryProperties << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalBufferInfoKHR& value)
+{
+ s << "VkPhysicalDeviceExternalBufferInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
+ s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExternalBufferPropertiesKHR& value)
+{
+ s << "VkExternalBufferPropertiesKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\texternalMemoryProperties = " << value.externalMemoryProperties << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceIDPropertiesKHR& value)
+{
+ s << "VkPhysicalDeviceIDPropertiesKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tdeviceUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.deviceUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.deviceUUID))) << '\n';
+ s << "\tdriverUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.driverUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.driverUUID))) << '\n';
+ s << "\tdeviceLUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.deviceLUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.deviceLUID))) << '\n';
+ s << "\tdeviceNodeMask = " << value.deviceNodeMask << '\n';
+ s << "\tdeviceLUIDValid = " << value.deviceLUIDValid << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExternalMemoryImageCreateInfoKHR& value)
+{
+ s << "VkExternalMemoryImageCreateInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsKHRStr(value.handleTypes) << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExternalMemoryBufferCreateInfoKHR& value)
+{
+ s << "VkExternalMemoryBufferCreateInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsKHRStr(value.handleTypes) << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExportMemoryAllocateInfoKHR& value)
+{
+ s << "VkExportMemoryAllocateInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsKHRStr(value.handleTypes) << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImportMemoryWin32HandleInfoKHR& value)
+{
+ s << "VkImportMemoryWin32HandleInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
+ s << "\thandle = " << value.handle << '\n';
+ s << "\tname = " << getCharPtrStr(value.name) << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExportMemoryWin32HandleInfoKHR& value)
+{
+ s << "VkExportMemoryWin32HandleInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tpAttributes = " << value.pAttributes << '\n';
+ s << "\tdwAccess = " << value.dwAccess << '\n';
+ s << "\tname = " << getCharPtrStr(value.name) << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkMemoryWin32HandlePropertiesKHR& value)
+{
+ s << "VkMemoryWin32HandlePropertiesKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkMemoryGetWin32HandleInfoKHR& value)
+{
+ s << "VkMemoryGetWin32HandleInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tmemory = " << value.memory << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImportMemoryFdInfoKHR& value)
+{
+ s << "VkImportMemoryFdInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
+ s << "\tfd = " << value.fd << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkMemoryFdPropertiesKHR& value)
+{
+ s << "VkMemoryFdPropertiesKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkMemoryGetFdInfoKHR& value)
+{
+ s << "VkMemoryGetFdInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tmemory = " << value.memory << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkWin32KeyedMutexAcquireReleaseInfoKHR& value)
+{
+ s << "VkWin32KeyedMutexAcquireReleaseInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tacquireCount = " << value.acquireCount << '\n';
+ s << "\tpAcquireSyncs = " << value.pAcquireSyncs << '\n';
+ s << "\tpAcquireKeys = " << value.pAcquireKeys << '\n';
+ s << "\tpAcquireTimeouts = " << value.pAcquireTimeouts << '\n';
+ s << "\treleaseCount = " << value.releaseCount << '\n';
+ s << "\tpReleaseSyncs = " << value.pReleaseSyncs << '\n';
+ s << "\tpReleaseKeys = " << value.pReleaseKeys << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalSemaphoreInfoKHR& value)
+{
+ s << "VkPhysicalDeviceExternalSemaphoreInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExternalSemaphorePropertiesKHR& value)
+{
+ s << "VkExternalSemaphorePropertiesKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\texportFromImportedHandleTypes = " << getExternalSemaphoreHandleTypeFlagsKHRStr(value.exportFromImportedHandleTypes) << '\n';
+ s << "\tcompatibleHandleTypes = " << getExternalSemaphoreHandleTypeFlagsKHRStr(value.compatibleHandleTypes) << '\n';
+ s << "\texternalSemaphoreFeatures = " << getExternalSemaphoreFeatureFlagsKHRStr(value.externalSemaphoreFeatures) << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExportSemaphoreCreateInfoKHR& value)
+{
+ s << "VkExportSemaphoreCreateInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\thandleTypes = " << getExternalSemaphoreHandleTypeFlagsKHRStr(value.handleTypes) << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreWin32HandleInfoKHR& value)
+{
+ s << "VkImportSemaphoreWin32HandleInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tsemaphore = " << value.semaphore << '\n';
+ s << "\tflags = " << getSemaphoreImportFlagsKHRStr(value.flags) << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
+ s << "\thandle = " << value.handle << '\n';
+ s << "\tname = " << getCharPtrStr(value.name) << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkExportSemaphoreWin32HandleInfoKHR& value)
+{
+ s << "VkExportSemaphoreWin32HandleInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tpAttributes = " << value.pAttributes << '\n';
+ s << "\tdwAccess = " << value.dwAccess << '\n';
+ s << "\tname = " << getCharPtrStr(value.name) << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkD3D12FenceSubmitInfoKHR& value)
+{
+ s << "VkD3D12FenceSubmitInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\twaitSemaphoreValuesCount = " << value.waitSemaphoreValuesCount << '\n';
+ s << "\tpWaitSemaphoreValues = " << value.pWaitSemaphoreValues << '\n';
+ s << "\tsignalSemaphoreValuesCount = " << value.signalSemaphoreValuesCount << '\n';
+ s << "\tpSignalSemaphoreValues = " << value.pSignalSemaphoreValues << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetWin32HandleInfoKHR& value)
+{
+ s << "VkSemaphoreGetWin32HandleInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tsemaphore = " << value.semaphore << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreFdInfoKHR& value)
+{
+ s << "VkImportSemaphoreFdInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tsemaphore = " << value.semaphore << '\n';
+ s << "\tflags = " << getSemaphoreImportFlagsKHRStr(value.flags) << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
+ s << "\tfd = " << value.fd << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetFdInfoKHR& value)
+{
+ s << "VkSemaphoreGetFdInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tsemaphore = " << value.semaphore << '\n';
+ s << "\thandleType = " << value.handleType << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkRefreshCycleDurationGOOGLE& value)
+{
+ s << "VkRefreshCycleDurationGOOGLE = {\n";
+ s << "\trefreshDuration = " << value.refreshDuration << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPastPresentationTimingGOOGLE& value)
+{
+ s << "VkPastPresentationTimingGOOGLE = {\n";
+ s << "\tpresentID = " << value.presentID << '\n';
+ s << "\tdesiredPresentTime = " << value.desiredPresentTime << '\n';
+ s << "\tactualPresentTime = " << value.actualPresentTime << '\n';
+ s << "\tearliestPresentTime = " << value.earliestPresentTime << '\n';
+ s << "\tpresentMargin = " << value.presentMargin << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPresentTimeGOOGLE& value)
+{
+ s << "VkPresentTimeGOOGLE = {\n";
+ s << "\tpresentID = " << value.presentID << '\n';
+ s << "\tdesiredPresentTime = " << value.desiredPresentTime << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPresentTimesInfoGOOGLE& value)
+{
+ s << "VkPresentTimesInfoGOOGLE = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tswapchainCount = " << value.swapchainCount << '\n';
+ s << "\tpTimes = " << value.pTimes << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVariablePointerFeaturesKHR& value)
+{
+ s << "VkPhysicalDeviceVariablePointerFeaturesKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tvariablePointersStorageBuffer = " << value.variablePointersStorageBuffer << '\n';
+ s << "\tvariablePointers = " << value.variablePointers << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkBindBufferMemoryInfoKHR& value)
+{
+ s << "VkBindBufferMemoryInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\tbuffer = " << value.buffer << '\n';
+ s << "\tmemory = " << value.memory << '\n';
+ s << "\tmemoryOffset = " << value.memoryOffset << '\n';
+ s << '}';
+ return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkBindImageMemoryInfoKHR& value)
+{
+ s << "VkBindImageMemoryInfoKHR = {\n";
+ s << "\tsType = " << value.sType << '\n';
+ s << "\tpNext = " << value.pNext << '\n';
+ s << "\timage = " << value.image << '\n';
+ s << "\tmemory = " << value.memory << '\n';
+ s << "\tmemoryOffset = " << value.memoryOffset << '\n';