| 388 | } |
| 389 | |
| 390 | void 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, |
nothing calls this directly
no test coverage detected