MCPcopy Create free account
hub / github.com/GameTechDev/PresentMon / VerboseTraceEventImpl

Function VerboseTraceEventImpl

PresentData/Debug.cpp:390–780  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

388}
389
390void VerboseTraceEventImpl(PMTraceConsumer* pmConsumer, EVENT_RECORD* eventRecord, EventMetadata* metadata)
391{
392 auto const& hdr = eventRecord->EventHeader;
393
394 static bool isFirstEventTraced = true;
395 if (isFirstEventTraced) {
396 isFirstEventTraced = false;
397 wprintf(L" Time (ns) PID TID EVENT\n");
398 }
399
400 FlushModifiedPresent();
401
402 if (hdr.ProviderId == Microsoft_Windows_D3D9::GUID) {
403 using namespace Microsoft_Windows_D3D9;
404 switch (hdr.EventDescriptor.Id) {
405 case Present_Start::Id: PrintEventHeader(hdr, "D3D9PresentStart"); break;
406 case Present_Stop::Id: PrintEventHeader(hdr, "D3D9PresentStop"); break;
407 }
408 return;
409 }
410
411 if (hdr.ProviderId == Microsoft_Windows_DXGI::GUID) {
412 using namespace Microsoft_Windows_DXGI;
413 switch (hdr.EventDescriptor.Id) {
414 case Present_Start::Id: PrintEventHeader(eventRecord, metadata, "DXGIPresent_Start", std::tuple{ L"Flags", PrintPresentFlags, }); break;
415 case PresentMultiplaneOverlay_Start::Id: PrintEventHeader(eventRecord, metadata, "DXGIPresentMPO_Start", std::tuple{ L"Flags", PrintPresentFlags, }); break;
416 case Present_Stop::Id: PrintEventHeader(hdr, "DXGIPresent_Stop"); break;
417 case PresentMultiplaneOverlay_Stop::Id: PrintEventHeader(hdr, "DXGIPresentMPO_Stop"); break;
418 }
419 if (pmConsumer->mTrackHybridPresent) {
420 if (hdr.EventDescriptor.Id == ResizeBuffers_Start::Id) { PrintEventHeader(hdr, "DXGIResizeBuffers_Start"); }
421 if (hdr.EventDescriptor.Id == SwapChain_Start::Id) { PrintEventHeader(hdr, "DXGISwapChain_Start"); }
422 }
423 return;
424 }
425
426 if (hdr.ProviderId == Microsoft_Windows_DxgKrnl::Win7::BLT_GUID) { PrintEventHeader(hdr, "Win7::BLT"); return; }
427 if (hdr.ProviderId == Microsoft_Windows_DxgKrnl::Win7::FLIP_GUID) { PrintEventHeader(hdr, "Win7::FLIP"); return; }
428 if (hdr.ProviderId == Microsoft_Windows_DxgKrnl::Win7::PRESENTHISTORY_GUID) { PrintEventHeader(hdr, "Win7::PRESENTHISTORY"); return; }
429 if (hdr.ProviderId == Microsoft_Windows_DxgKrnl::Win7::QUEUEPACKET_GUID) { PrintEventHeader(hdr, "Win7::QUEUEPACKET"); return; }
430 if (hdr.ProviderId == Microsoft_Windows_DxgKrnl::Win7::VSYNCDPC_GUID) { PrintEventHeader(hdr, "Win7::VSYNCDPC"); return; }
431 if (hdr.ProviderId == Microsoft_Windows_DxgKrnl::Win7::MMIOFLIP_GUID) { PrintEventHeader(hdr, "Win7::MMIOFLIP"); return; }
432
433 if (hdr.ProviderId == Microsoft_Windows_DxgKrnl::GUID) {
434 using namespace Microsoft_Windows_DxgKrnl;
435 if (pmConsumer->mTrackDisplay) {
436 switch (hdr.EventDescriptor.Id) {
437 case Blit_Info::Id: PrintEventHeader(eventRecord, metadata, "Blit_Info", std::tuple{ L"hwnd", PrintU64x,
438 L"bRedirectedPresent", PrintU32 }); break;
439 case BlitCancel_Info::Id: PrintEventHeader(hdr, "BlitCancel_Info"); break;
440 case FlipMultiPlaneOverlay_Info::Id: PrintEventHeader(eventRecord, metadata, "FlipMultiPlaneOverlay_Info", std::tuple{ L"VidPnSourceId", PrintU32,
441 L"LayerIndex", PrintU32 }); break;
442 case Present_Info::Id: PrintEventHeader(hdr, "DxgKrnl_Present_Info"); break;
443
444 case MMIOFlip_Info::Id: PrintEventHeader(eventRecord, metadata, "MMIOFlip_Info", std::tuple{ L"FlipSubmitSequence", PrintU64, }); break;
445 case Flip_Info::Id: PrintEventHeader(eventRecord, metadata, "Flip_Info", std::tuple{ L"FlipInterval", PrintU32,
446 L"MMIOFlip", PrintBool, }); break;
447 case IndependentFlip_Info::Id: PrintEventHeader(eventRecord, metadata, "IndependentFlip_Info", std::tuple{ L"SubmitSequence", PrintU32,

Callers

nothing calls this directly

Calls 7

FlushModifiedPresentFunction · 0.85
PrintEventHeaderFunction · 0.85
LookupFrameIdFunction · 0.85
TokenStateEnum · 0.85
PMPFrameTypeToStringFunction · 0.85
PrintInputTypeFunction · 0.85
GetEventDataMethod · 0.45

Tested by

no test coverage detected