MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / SetupVsync

Function SetupVsync

Source/ThirdParty/tracy/client/TracySysTrace.cpp:252–337  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

250}
251
252static void SetupVsync()
253{
254#if _WIN32_WINNT >= _WIN32_WINNT_WINBLUE && !defined(__MINGW32__)
255 const auto psz = sizeof( EVENT_TRACE_PROPERTIES ) + MAX_PATH;
256 s_propVsync = (EVENT_TRACE_PROPERTIES*)tracy_malloc( psz );
257 memset( s_propVsync, 0, sizeof( EVENT_TRACE_PROPERTIES ) );
258 s_propVsync->LogFileMode = EVENT_TRACE_REAL_TIME_MODE;
259 s_propVsync->Wnode.BufferSize = psz;
260#ifdef TRACY_TIMER_QPC
261 s_propVsync->Wnode.ClientContext = 1;
262#else
263 s_propVsync->Wnode.ClientContext = 3;
264#endif
265 s_propVsync->LoggerNameOffset = sizeof( EVENT_TRACE_PROPERTIES );
266 strcpy( ((char*)s_propVsync) + sizeof( EVENT_TRACE_PROPERTIES ), "TracyVsync" );
267
268 auto backup = tracy_malloc( psz );
269 memcpy( backup, s_propVsync, psz );
270
271 const auto controlStatus = ControlTraceA( 0, "TracyVsync", s_propVsync, EVENT_TRACE_CONTROL_STOP );
272 if( controlStatus != ERROR_SUCCESS && controlStatus != ERROR_WMI_INSTANCE_NOT_FOUND )
273 {
274 tracy_free( backup );
275 tracy_free( s_propVsync );
276 return;
277 }
278
279 memcpy( s_propVsync, backup, psz );
280 tracy_free( backup );
281
282 const auto startStatus = StartTraceA( &s_traceHandleVsync, "TracyVsync", s_propVsync );
283 if( startStatus != ERROR_SUCCESS )
284 {
285 tracy_free( s_propVsync );
286 return;
287 }
288
289 EVENT_FILTER_EVENT_ID fe = {};
290 fe.FilterIn = TRUE;
291 fe.Count = 1;
292 fe.Events[0] = 0x0011; // VSyncDPC_Info
293
294 EVENT_FILTER_DESCRIPTOR desc = {};
295 desc.Ptr = (ULONGLONG)&fe;
296 desc.Size = sizeof( fe );
297 desc.Type = EVENT_FILTER_TYPE_EVENT_ID;
298
299 ENABLE_TRACE_PARAMETERS params = {};
300 params.Version = ENABLE_TRACE_PARAMETERS_VERSION_2;
301 params.EnableProperty = EVENT_ENABLE_PROPERTY_IGNORE_KEYWORD_0;
302 params.SourceId = s_propVsync->Wnode.Guid;
303 params.EnableFilterDesc = &desc;
304 params.FilterDescCount = 1;
305
306 uint64_t mask = 0x4000000000000001; // Microsoft_Windows_DxgKrnl_Performance | Base
307 if( EnableTraceEx2( s_traceHandleVsync, &DxgKrnlGuid, EVENT_CONTROL_CODE_ENABLE_PROVIDER, TRACE_LEVEL_INFORMATION, mask, mask, 0, &params ) != ERROR_SUCCESS )
308 {
309 tracy_free( s_propVsync );

Callers 1

SysTraceStartFunction · 0.85

Calls 5

tracy_mallocFunction · 0.85
memsetFunction · 0.85
memcpyFunction · 0.85
tracy_freeFunction · 0.85
SetThreadNameFunction · 0.50

Tested by

no test coverage detected