From 06e174dcbf63370ea802fe302e07250845bf74cf Mon Sep 17 00:00:00 2001 From: Hugues Evrard Date: Tue, 12 Mar 2019 18:52:26 +0100 Subject: Implement --log-graphics-calls-time flag (#351) Add the necessary Delegate methods to implement timing of graphics API calls. --- tools/update_vk_wrappers.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/update_vk_wrappers.py b/tools/update_vk_wrappers.py index bb7dd45..995558d 100755 --- a/tools/update_vk_wrappers.py +++ b/tools/update_vk_wrappers.py @@ -89,7 +89,6 @@ def gen_wrappers(methods, xml): return_variable = 'ret' call_prefix = return_type + ' ' + return_variable + ' = ' - template = Template(R'''{ PFN_${method} ptr = reinterpret_cast(getInstanceProcAddr(instance_, "${method}")); if (!ptr) { @@ -98,7 +97,23 @@ def gen_wrappers(methods, xml): if (delegate && delegate->LogGraphicsCalls()) { ptrs_.${method} = [ptr, delegate](${signature}) -> ${return_type} { delegate->Log("${method}"); + uint64_t timestamp_start = 0; + if (delegate->LogGraphicsCallsTime()) { + timestamp_start = delegate->GetTimestampNs(); + } ${call_prefix}ptr(${arguments}); + if (delegate->LogGraphicsCallsTime()) { + uint64_t timestamp_end = delegate->GetTimestampNs(); + uint64_t duration = timestamp_end - timestamp_start; + std::ostringstream out; + out << "time "; + // name of method on 40 characters + out << std::left << std::setw(40) << "${method}"; + // duration in nanoseconds on 12 characters, right-aligned + out << std::right << std::setw(12) << duration; + out << " ns"; + delegate->Log(out.str()); + } return ${return_variable}; }; } else { -- cgit v1.2.3