Advertisement
aleiby

SteamVR gpuview vrlog.cmd

Nov 6th, 2023
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.33 KB | None | 0 0
  1. @echo off
  2.  
  3. REM In order to capture etl traces, this script relies on Xperf.exe. It is assumed
  4. REM that Xperf.exe will be installed in GPUView's parent directory.
  5.  
  6. REM
  7. REM Logic:
  8. REM
  9. REM If the command line is blank, we'll try to start logging using normal settings.
  10. REM If the command line is blank and we're already logging, we'll turn off logging.
  11. REM
  12. REM Usage:
  13. REM
  14. REM This script requires an Administrator CMD Window to work. This script also
  15. REM uses the DOS environment to save state. The script is designed to be run twice:
  16. REM the first time it turns on logging, the second time it stops logging. The end
  17. REM result is a merged.etl file.
  18.  
  19. REM
  20. REM Different tracing options that can be enabled
  21. REM
  22. REM SET XXX=(GUID|KnownProviderName)[:(Flags|Groups)[:Level[:'stack']]]
  23. set TRACE_MIRAGE=356E1338-04AD-420E-8B8A-A2EB678541CF:0xf00000:5
  24. set TRACE_DHD=19d9d739-da0a-41a0-b97f-24ed27abc9fb:0xffffff:5
  25. set TRACE_DXVA2=a0386e75-f70c-464c-a9ce-33c44e091623:0xffff:5
  26. set TRACE_MMCSS=f8f10121-b617-4a56-868b-9df1b27fe32c:0xffff:5
  27. set TRACE_WMDRM=6e03dd26-581b-4ec5-8f22-601a4de5f022:0xffff:5
  28. set TRACE_WME=8f2048e0-f260-4f57-a8d1-932376291682
  29. set TRACE_WMP=681069c4-b785-466a-bc63-4aa616644b68:0xffff:5
  30. set TRACE_DVD=75d4a1bb-7cc6-44b1-906d-d5e05be6d060:0xffff:5
  31. set TRACE_DSHOW=28cf047a-2437-4b24-b653-b9446a419a69
  32. set TRACE_MF=f404b94e-27e0-4384-bfe8-1d8d390b0aa3+362007f7-6e50-4044-9082-dfa078c63a73:0x000000000000ffff:0x5
  33. set TRACE_AE=a6a00efd-21f2-4a99-807e-9b3bf1d90285:0x000000000000ffff:0x5
  34. set TRACE_HME=63770680-05F1-47E0-928A-9ACFDCF52147:0xffff:5
  35. set TRACE_HDDVD=779d8cdc-666b-4bf4-a367-9df89d6901e8:0xffff:5
  36. set TRACE_DWMAPIGUID=71dd85bc-d474-4974-b0f6-93ffc5bfbd04::6
  37. set TRACE_SCHEDULEGUID=8cc44e31-7f28-4f45-9938-4810ff517464:0xffff:6
  38. set TRACE_DX=DX
  39. set TRACE_VR=8c8f13b1-60eb-4b6a-a433-de86104115ac
  40. set TRACE_WARP=ee685ec4-8270-4b08-9e4e-8b356f48f92f:0
  41. set TRACE_DXGI=CA11C036-0102-4A2D-A6AD-F03CFED5D3C9:0xf:6:'stack'
  42. set TRACE_DXGIDEBUG=F1FF64EF-FAF3-5699-8E51-F6EC2FBD97D1:0xffffffffffffffff
  43. set TRACE_DXGIDEBUG_LIGHT=%TRACE_DXGIDEBUG%:4
  44. set TRACE_DXGIDEBUG_NORMAL=%TRACE_DXGIDEBUG%:4:'stack'
  45. set TRACE_DXGIDEBUG_VERBOSE=%TRACE_DXGIDEBUG%:6:'stack'
  46. set TRACE_DXGI_TELEMETRY=03bbe5b8-c788-4d0b-b47e-5b5731398a89
  47. set TRACE_DXCORE=ab604427-d048-4139-8494-1246c81f09d5:0xffffffffffffffff:6:'stack'
  48. set TRACE_D3D11ON12=a0ab5aac-e0a4-4f10-83c6-31939c604fd9:0xffffffffffffffff:6:'stack'
  49. set TRACE_D3D9ON12=c0c418c5-1f3c-4ee0-93a2-a0bb8f417f9a:0xffffffffffffffff:6:'stack'
  50. set TRACE_D3D12=5d8087dd-3a9b-4f56-90df-49196cdc4f11:0xffffffffffffffff:6:'stack'
  51. set TRACE_D3D11=db6f6ddb-ac77-4e88-8253-819df9bbf140:0xffffffffffffffff:6:'stack'
  52. set TRACE_D3D10LEVEL9=7E7D3382-023C-43cb-95D2-6F0CA6D70381:0x1
  53. set TRACE_D3DSCACHE=2d4ebca6-ea64-453f-a292-ae2ea0ee513b:0xf:5
  54. set TRACE_DXC=802ec45a-1e99-4b83-9920-87c98277ba9d
  55. set TRACE_DXC_ALL=%TRACE_DXC%:0x90FFFF:5:'stack'
  56. set TRACE_DXC_LONGHAUL=%TRACE_DXC%:0x800:5
  57. set TRACE_DXC_MIN=%TRACE_DXC%:0x800:5
  58. set TRACE_DXC_LIGHT=%TRACE_DXC%:0x826:5
  59. set TRACE_DXC_NORMAL=%TRACE_DXC%:0x900236:5
  60. set TRACE_DXC_STACKS=%TRACE_DXC%:0x208041:5:'stack'
  61. set TRACE_UMD=a688ee40-d8d9-4736-b6f9-6b74935ba3b1:0xffff:5
  62. set TRACE_DWM=a42c77db-874f-422e-9b44-6d89fe2bd3e5:0x000000007fffffff:0x5
  63. set TRACE_DWM2=8c9dd1ad-e6e5-4b07-b455-684a9d879900:0xFFFF:6
  64. set TRACE_DWM3=9e9bba3c-2e38-40cb-99f4-9e8281425164:0xFFFF:6
  65. set TRACE_CODEC=ea6d6e3b-7014-4ab1-85db-4a50cda32a82:0xffff:5
  66. set TRACE_KMFD=E7C7EDF9-D0E4-4338-8AE3-BCA3C5B4B4A3
  67. set TRACE_UMFD=a70bc228-e778-4061-86fa-debb03fda64a
  68. set TRACE_WDLOG=70e74dd8-39db-5f6f-6fd1-f5581b29e834
  69. set TRACE_WDLOG_ALL=%TRACE_WDLOG%:0xffff:5
  70. set TRACE_WDLOG_ERRORS=%TRACE_WDLOG%:0x3:5
  71. REM set TRACE_AVALON=AvalonALL
  72. set TRACE_TESTFRAMEWORK=31293f4f-f7bb-487d-8b3b-f537b827352f
  73. set TRACE_TEST=42C4E0C1-0D92-46f0-842C-1E791FA78D52
  74. set TRACE_SC=30336ed4-e327-447c-9de0-51b652c86108
  75. set TRACE_XAML=531A35AB-63CE-4BCF-AA98-F88C7A89E455:0xffff
  76. set TRACE_WIN32K=8c416c79-d49b-4f01-a467-e56d3aa8234c:0xffff
  77. set TRACE_D2D=dcb453db-c652-48be-a0f8-a64459d5162e:0:5
  78. set TRACE_D2DSCENARIOS=712909c0-6e57-4121-b639-87c8bf9004e0
  79. REM set TRACE_PRESENT=
  80. set TRACE_D3D9_PRESENT=783ACA0A-790E-4d7f-8451-AA850511C6B9:0xf:6
  81. set TRACE_DXGI_PRESENT=CA11C036-0102-4A2D-A6AD-F03CFED5D3C9:0xf:6
  82. set TRACE_D3D11_PRESENT=db6f6ddb-ac77-4e88-8253-819df9bbf140:0xffffffffffffffff:6
  83. set TRACE_DXC_ALL_PRESENT=%TRACE_DXC%:0x10BFFF:5
  84. set TRACE_DXC_PRESENT=%TRACE_DXC%:0x208041:5
  85. set TRACE_KERNEL_POWER=Microsoft-Windows-Kernel-Power:0xffffffffffffffff:0xff+Microsoft-Windows-Kernel-Processor-Power:0xffffffffffffffff:0xff+Microsoft-Windows-Kernel-Pep:0xffffffffffffffff:0xff
  86. set TRACE_MLSD=7b4dc3d4-29a1-4599-8930-9ea9001686d2
  87.  
  88. REM
  89. REM To Add another provider, create an environment variable here and then add it
  90. REM to the collection just below.
  91. REM set TRACE_PRIVATE=X
  92. REM
  93.  
  94. REM
  95. REM These variables hold provider GUIDs collections that we want for each level.
  96. REM Notice that the levels build on each other. If you add a provider to the collection,
  97. REM you should just have to add it once. If there are special flags for each level,
  98. REM modify the individual sections like what's done for the Dxgkrnl logger. Also notice
  99. REM that there are two main sessions: One that the script will call capturestate on
  100. REM and another that we don't. If your provider doesn't respond to capturestate,
  101. REM it should not be placed in that session.
  102. REM
  103. REM CaptureState collection
  104. SET TRACE_CS_PROVIDERS_MIN=%TRACE_UMD%+%TRACE_DXGI%+%TRACE_DXGI_TELEMETRY%+%TRACE_D3D11ON12%+%TRACE_D3D9ON12%+%TRACE_D3D12%+%TRACE_D3D11%+%TRACE_D3D10LEVEL9%
  105. SET TRACE_CS_PROVIDERS_PRESENT=%TRACE_UMD%+%TRACE_DXGI_PRESENT%+%TRACE_D3D11_PRESENT%+%TRACE_D3D9_PRESENT%+%TRACE_MIRAGE%+%TRACE_DHD%
  106.  
  107. SET TRACE_CS_PROVIDERS_LIGHT=%TRACE_CS_PROVIDERS_MIN%+%TRACE_D3DSCACHE%
  108. SET TRACE_CS_PROVIDERS_NORMAL=%TRACE_CS_PROVIDERS_LIGHT%+%TRACE_MIRAGE%+%TRACE_DHD%+%TRACE_KERNEL_POWER%
  109. SET TRACE_CS_PROVIDERS_VERBOSE=%TRACE_CS_PROVIDERS_NORMAL%
  110.  
  111. SET TRACE_CS_STATE_MIN=%TRACE_UMD%+%TRACE_DXGI%+%TRACE_DXGI_TELEMETRY%+%TRACE_D3D11ON12%+%TRACE_D3D9ON12%+%TRACE_D3D12%+%TRACE_D3D11%+%TRACE_D3D10LEVEL9%
  112. SET TRACE_CS_STATE_PRESENT=%TRACE_UMD%+%TRACE_DXGI_PRESENT%+%TRACE_D3D11_PRESENT%+%TRACE_D3D9_PRESENT%
  113.  
  114. SET TRACE_CS_STATE_LIGHT=%TRACE_CS_STATE_MIN%+%TRACE_D3DSCACHE%
  115. SET TRACE_CS_STATE_NORMAL=%TRACE_CS_STATE_LIGHT%
  116. SET TRACE_CS_STATE_VERBOSE=%TRACE_CS_STATE_NORMAL%
  117. SET SCHEDULER_LOG_STATE=%TRACE_DXC%:0x04000000:5
  118.  
  119. REM No CaptureState collection
  120. SET TRACE_NOCS_PROVIDERS_PRESENT=%TRACE_DXC_PRESENT%+%TRACE_DWM3%+%TRACE_WIN32K%
  121. SET TRACE_NOCS_PROVIDERS_MIN=%TRACE_DXC_STACKS%+%TRACE_VR%
  122.  
  123. SET TRACE_NOCS_PROVIDERS_LIGHT_NODXGIDEBUG=%TRACE_NOCS_PROVIDERS_MIN%+%TRACE_MF%+%TRACE_WME%
  124. SET TRACE_NOCS_PROVIDERS_NORMAL_NODXGIDEBUG=%TRACE_NOCS_PROVIDERS_LIGHT_NODXGIDEBUG%+%TRACE_SCHEDULEGUID%+%TRACE_SC%+%TRACE_WIN32K%+%TRACE_DWM%+%TRACE_DWM2%+%TRACE_DWM3%+%TRACE_TESTFRAMEWORK%+%TRACE_TEST%+%TRACE_DSHOW%+%TRACE_AE%+%TRACE_DXVA2%+%TRACE_DXCORE%+%TRACE_MLSD%
  125. SET TRACE_NOCS_PROVIDERS_VERBOSE_NODXGIDEBUG=%TRACE_NOCS_PROVIDERS_NORMAL_NODXGIDEBUG%+%TRACE_D2DSCENARIOS%+%TRACE_D2D%+%TRACE_MMCSS%+%TRACE_WMDRM%+%TRACE_WMP%+%TRACE_DVD%+%TRACE_HME%+%TRACE_HDDVD%+%TRACE_DWMAPIGUID%+%TRACE_CODEC%+%TRACE_MLSD%
  126.  
  127. SET TRACE_NOCS_PROVIDERS_LIGHT=%TRACE_NOCS_PROVIDERS_LIGHT_NODXGIDEBUG%+%TRACE_DXGIDEBUG_LIGHT%
  128. SET TRACE_NOCS_PROVIDERS_NORMAL=%TRACE_NOCS_PROVIDERS_NORMAL_NODXGIDEBUG%+%TRACE_DXGIDEBUG_NORMAL%
  129. SET TRACE_NOCS_PROVIDERS_VERBOSE=%TRACE_NOCS_PROVIDERS_VERBOSE_NODXGIDEBUG%+%TRACE_DXGIDEBUG_VERBOSE%
  130.  
  131. REM
  132. REM To turn off the echo to the console, set this variable to no
  133. REM
  134. SET ECHO_INFO=yes
  135.  
  136.  
  137.  
  138. if not "%TLOG%"=="" goto Done_With_It
  139. REM
  140. REM To determine physical memory
  141. REM
  142. if not "%TRACE_LOGGING_MEMORY%" == "" goto Do_Not_Process_File
  143.  
  144. IF EXIST %windir%\system32\systeminfo.exe (
  145. call :GetPhysicalMemory
  146. ) ELSE (
  147. set TRACE_LOGGING_MEMORY=32000
  148. )
  149.  
  150. :Do_Not_Process_File
  151.  
  152. REM
  153. REM For buffers sizes
  154. REM
  155. REM The cutoff for large bufers 5G, Medium buffers 2G physical memory
  156. if %TRACE_LOGGING_MEMORY% Gtr 4000 goto Set_Large_Buffers
  157. if %TRACE_LOGGING_MEMORY% Gtr 2000 goto Set_Medium_Buffers
  158. REM echo !Using Small Buffers Memory Footprint here!
  159. set TRACE_LARGE_BUFFERS=-BufferSize 1024 -MinBuffers 30 -MaxBuffers 120
  160. set TRACE_STAND_BUFFERS=-BufferSize 1024 -MinBuffers 25 -MaxBuffers 25
  161. goto Done_With_It
  162. :Set_Medium_Buffers
  163. REM echo !Using Meidum Buffers Memory Footprint here!
  164. set TRACE_LARGE_BUFFERS=-BufferSize 1024 -MinBuffers 60 -MaxBuffers 240
  165. set TRACE_STAND_BUFFERS=-BufferSize 1024 -MinBuffers 50 -MaxBuffers 50
  166. goto Done_With_It
  167. :Set_Large_Buffers
  168. REM echo !Using Large Buffers Memory Footprint here!
  169. set TRACE_LARGE_BUFFERS=-BufferSize 1024 -MinBuffers 120 -MaxBuffers 480
  170. set TRACE_STAND_BUFFERS=-BufferSize 1024 -MinBuffers 100 -MaxBuffers 100
  171. :Done_With_It
  172.  
  173. REM
  174. REM NT logging groupings
  175. REM
  176. set TRACE_NT_MIN=LOADER+PROC_THREAD+CSWITCH+DISPATCHER+POWER
  177. set TRACE_NT_LONGHAUL=LOADER+PROC_THREAD+POWER
  178. set TRACE_NT_LIGHT=%TRACE_NT_MIN%+DISK_IO+HARD_FAULTS
  179. REM
  180. REM Note in order to get callstacks on amd64 bit builds, you need to enable the following
  181. REM registry key:
  182. REM
  183. REM HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management\DisablePagingExecutive
  184. REM
  185. REM by setting it to 1. Lookup DisablePagingExecutive via your favorite search engine for details.
  186. REM
  187. set TRACE_NT_NORMAL=%TRACE_NT_LIGHT%+PROFILE+MEMINFO+DPC+INTERRUPT -stackwalk @"%~dp0\EventsForStackTrace.txt"
  188. set TRACE_NT_VERBOSE=%TRACE_NT_LIGHT%+PROFILE+MEMINFO+SYSCALL+DPC+INTERRUPT+ALL_FAULTS -stackwalk @"%~dp0\EventsForStackTrace.txt"
  189.  
  190. REM
  191. REM From 'xperf -help providers' we get the following table. GPUView, at a minimum
  192. REM really needs LOADER, PROC_THREAD and CSWITCH.
  193. REM
  194. REM Kernel Flags:
  195. REM PROC_THREAD : Process and Thread create/delete
  196. REM LOADER : Kernel and user mode Image Load/Unload events
  197. REM PROFILE : CPU Sample profile
  198. REM CSWITCH : Context Switch
  199. REM COMPACT_CSWITCH: Compact Context Switch
  200. REM DISPATCHER : CPU Scheduler
  201. REM DPC : DPC Events
  202. REM INTERRUPT : Interrupt events
  203. REM SYSCALL : System calls
  204. REM PRIORITY : Priority change events
  205. REM ALPC : Advanced Local Procedure Call
  206. REM PERF_COUNTER : Process Perf Counters
  207. REM DISK_IO : Disk I/O
  208. REM DISK_IO_INIT : Disk I/O Initiation
  209. REM FILE_IO : File system operation end times and results
  210. REM FILE_IO_INIT : File system operation (create/open/close/read/write)
  211. REM HARD_FAULTS : Hard Page Faults
  212. REM FILENAME : FileName (e.g., FileName create/delete/rundown)
  213. REM SPLIT_IO : Split I/O
  214. REM REGISTRY : Registry tracing
  215. REM DRIVERS : Driver events
  216. REM POWER : Power management events
  217. REM NETWORKTRACE : Network events (e.g., tcp/udp send/receive)
  218. REM VIRT_ALLOC : Virtual allocation reserve and release
  219. REM MEMINFO : Memory List Info
  220. REM ALL_FAULTS : All page faults including hard, Copy on write, demand zero faults, etc.
  221.  
  222.  
  223. REM
  224. REM The Environment variable TLOG (trace logging) will be used to indicate that
  225. REM logging is active or not. if TLOG is set to ON, we're currently logging.
  226. REM
  227.  
  228. if "%TLOG%"=="" goto StartSection
  229. if "%TLOG%"=="MIN" goto StopSection
  230. if "%TLOG%"=="PRESENT" goto StopSection
  231. if "%TLOG%"=="NORMAL" goto StopSection
  232. if "%TLOG%"=="LIGHT" goto StopSection
  233. if "%TLOG%"=="LONGHAUL" goto StopSection
  234. if "%TLOG%"=="VERBOSE" goto StopSection
  235.  
  236. REM Start Logging section
  237. :StartSection
  238.  
  239. REM
  240. REM If we're already logging, stop logging.
  241. REM
  242. if "%TLOG%"=="MIN" goto StopSection
  243. if "%TLOG%"=="PRESENT" goto StopSection
  244. if "%TLOG%"=="NORMAL" goto StopSection
  245. if "%TLOG%"=="LIGHT" goto StopSection
  246. if "%TLOG%"=="LONGHAUL" goto StopSection
  247. if "%TLOG%"=="VERBOSE" goto StopSection
  248.  
  249. REM
  250. REM Check to see if they used a command line option
  251. REM
  252.  
  253. if "%1%" == "" goto StartNormal
  254. if "%1%" == "normal" goto StartNormal
  255. if "%1%" == "n" goto StartNormal
  256. if "%1%" == "light" goto StartLight
  257. if "%1%" == "longhaul" goto StartLonghaul
  258. if "%1%" == "l" goto StartLight
  259. if "%1%" == "present" goto StartPresent
  260. if "%1%" == "min" goto StartMin
  261. if "%1%" == "m" goto StartMin
  262. if "%1%" == "verbose" goto StartVerbose
  263. if "%1%" == "v" goto StartVerbose
  264. goto CLUsage
  265.  
  266. :StartLonghaul
  267. REM
  268. REM Start Longhaul
  269. REM
  270. "%~dp0"..\Xperf -on %TRACE_NT_LONGHAUL% %TRACE_LARGE_BUFFERS% -f Kernel.etl
  271. "%~dp0"..\Xperf -start DxcLogger -on %TRACE_DXC_LONGHAUL% %TRACE_LARGE_BUFFERS% -f DXC.etl
  272. "%~dp0"..\Xperf -capturestate DxcLogger %TRACE_DXC_LONGHAUL%
  273. set TLOG=LONGHAUL
  274. goto EndIt
  275.  
  276. :StartProviders
  277.  
  278. if "%ECHO_INFO%" == "yes" echo Xperf -on %TRACE_NT_PROVIDER% %TRACE_LARGE_BUFFERS% -f Kernel.etl
  279. if "%ECHO_INFO%" == "yes" echo.
  280. "%~dp0"..\Xperf -on %TRACE_NT_PROVIDER% %TRACE_LARGE_BUFFERS% -f Kernel.etl
  281.  
  282. if "%ECHO_INFO%" == "yes" echo Xperf -start CaptureState -on %TRACE_CS_PROVIDERS% %TRACE_LARGE_BUFFERS% -f CaptureState.etl
  283. if "%ECHO_INFO%" == "yes" echo.
  284. "%~dp0"..\Xperf -start CaptureState -on %TRACE_CS_PROVIDERS% %TRACE_LARGE_BUFFERS% -f CaptureState.etl
  285.  
  286. if "%ECHO_INFO%" == "yes" echo Xperf -capturestate CaptureState %TRACE_CS_STATE%
  287. if "%ECHO_INFO%" == "yes" echo.
  288. "%~dp0"..\Xperf -capturestate CaptureState %TRACE_CS_STATE%
  289.  
  290. if "%ECHO_INFO%" == "yes" echo Xperf -start SchedulingLog -on %SCHEDULER_LOG_STATE% %TRACE_LARGE_BUFFERS% -f SchedulingLog.etl
  291. if "%ECHO_INFO%" == "yes" echo.
  292. "%~dp0"..\Xperf -start SchedulingLog -on %SCHEDULER_LOG_STATE% %TRACE_LARGE_BUFFERS% -f SchedulingLog.etl
  293.  
  294. if "%ECHO_INFO%" == "yes" echo Xperf -capturestate SchedulingLog %SCHEDULER_LOG_STATE%
  295. if "%ECHO_INFO%" == "yes" echo.
  296. "%~dp0"..\Xperf -capturestate SchedulingLog %SCHEDULER_LOG_STATE%
  297.  
  298. if "%ECHO_INFO%" == "yes" echo Xperf -start NoCaptureState -on %TRACE_NOCS_PROVIDERS% %TRACE_LARGE_BUFFERS% -f NoCaptureState.etl
  299. if "%ECHO_INFO%" == "yes" echo.
  300. "%~dp0"..\Xperf -start NoCaptureState -on %TRACE_NOCS_PROVIDERS% %TRACE_LARGE_BUFFERS% -f NoCaptureState.etl
  301.  
  302. goto EndIt
  303.  
  304. :StartMin
  305. SET TRACE_NT_PROVIDER=%TRACE_NT_MIN%
  306. SET TRACE_CS_PROVIDERS=%TRACE_DXC_MIN%+%TRACE_CS_PROVIDERS_MIN%
  307. SET TRACE_CS_STATE=%TRACE_DXC_ALL%+%TRACE_CS_STATE_MIN%
  308. SET TRACE_NOCS_PROVIDERS=%TRACE_DX%:0x9+%TRACE_XAML%:4+%TRACE_WARP%:1+%TRACE_NOCS_PROVIDERS_MIN%
  309. call :StartProviders
  310. @echo off
  311. set TLOG=MIN
  312. goto EndIt
  313.  
  314. :StartPresent
  315. SET TRACE_NT_PROVIDER=%TRACE_NT_MIN%
  316. SET TRACE_CS_PROVIDERS=%TRACE_DXC_MIN%+%TRACE_CS_PROVIDERS_PRESENT%
  317. SET TRACE_CS_STATE=%TRACE_DXC_ALL_PRESENT%+%TRACE_CS_STATE_PRESENT%
  318. SET TRACE_NOCS_PROVIDERS=%TRACE_DX%:0x9+%TRACE_XAML%:4+%TRACE_NOCS_PROVIDERS_PRESENT%
  319. call :StartProviders
  320. @echo off
  321. set TLOG=PRESENT
  322. goto EndIt
  323.  
  324. :StartLight
  325. SET TRACE_NT_PROVIDER=%TRACE_NT_LIGHT%
  326. SET TRACE_CS_PROVIDERS=%TRACE_DXC_LIGHT%+%TRACE_CS_PROVIDERS_LIGHT%
  327. SET TRACE_CS_STATE=%TRACE_DXC_ALL%+%TRACE_CS_STATE_LIGHT%
  328. SET TRACE_NOCS_PROVIDERS=%TRACE_DX%:0x2F+%TRACE_XAML%:4+%TRACE_WARP%:1+%TRACE_NOCS_PROVIDERS_LIGHT%
  329. call :StartProviders
  330. @echo off
  331. set TLOG=LIGHT
  332. goto EndIt
  333.  
  334. :StartNormal
  335. SET TRACE_NT_PROVIDER=%TRACE_NT_NORMAL%
  336. SET TRACE_CS_PROVIDERS=%TRACE_DXC_NORMAL%+%TRACE_CS_PROVIDERS_NORMAL%
  337. SET TRACE_CS_STATE=%TRACE_DXC_ALL%+%TRACE_CS_STATE_NORMAL%
  338. SET TRACE_NOCS_PROVIDERS=%TRACE_DX%:0x2F+%TRACE_XAML%:4+%TRACE_WARP%:1+%TRACE_NOCS_PROVIDERS_NORMAL%+%TRACE_WDLOG_ERRORS%
  339. call :StartProviders
  340. @echo off
  341. set TLOG=NORMAL
  342. goto EndIt
  343.  
  344. :StartVerbose
  345. REM "%~dp0"..\Xperf -setprofint 1221
  346. SET TRACE_NT_PROVIDER=%TRACE_NT_NORMAL%
  347. SET TRACE_CS_PROVIDERS=%TRACE_DXC_NORMAL%+%TRACE_CS_PROVIDERS_VERBOSE%
  348. SET TRACE_CS_STATE=%TRACE_DXC_ALL%+%TRACE_CS_STATE_VERBOSE%
  349. SET TRACE_NOCS_PROVIDERS=%TRACE_DX%+%TRACE_XAML%:5+%TRACE_WARP%:0x12+%TRACE_NOCS_PROVIDERS_VERBOSE%+%TRACE_WDLOG_ALL%
  350. call :StartProviders
  351. @echo off
  352. set TLOG=VERBOSE
  353. goto EndIt
  354.  
  355.  
  356.  
  357. REM Stop Logging section
  358. :StopSection
  359. REM
  360. REM Here is where we determine how to shut things off
  361. REM
  362.  
  363. if "%TLOG%"=="MIN" goto StopMin
  364. if "%TLOG%"=="PRESENT" goto StopPresent
  365. if "%TLOG%"=="LIGHT" goto StopLight
  366. if "%TLOG%"=="LONGHAUL" goto StopLonghaul
  367. if "%TLOG%"=="NORMAL" goto StopNormal
  368. if "%TLOG%"=="VERBOSE" goto StopVerbose
  369. goto EndIt
  370.  
  371. :StopLonghaul
  372. "%~dp0"..\Xperf -stop DxcLogger
  373. "%~dp0"..\Xperf.exe -stop
  374. echo All loggers stopped, starting merge...
  375. "%~dp0"..\Xperf -merge DXC.etl kernel.etl Merged.etl
  376. "%~dp0"..\Xperf -setprofint > NUL
  377. echo Output: %~dp0Merged.etl
  378. call :DeleteIntermediate DXC.etl
  379. call :DeleteIntermediate Kernel.etl
  380. set TLOG=
  381. goto EndIt
  382.  
  383. :StopProviders
  384.  
  385. REM Capture scheduler log state
  386. if "%ECHO_INFO%" == "yes" echo XPerf -capturestate SchedulingLog
  387. "%~dp0"..\Xperf -capturestate SchedulingLog %SCHEDULER_LOG_STATE%
  388.  
  389. if "%ECHO_INFO%" == "yes" echo Xperf -stop SchedulingLog
  390. "%~dp0"..\Xperf -stop SchedulingLog
  391.  
  392. if "%ECHO_INFO%" == "yes" echo Xperf -stop CaptureState
  393. "%~dp0"..\Xperf -stop CaptureState
  394. if "%ECHO_INFO%" == "yes" echo Xperf -stop NoCaptureState
  395. "%~dp0"..\Xperf -stop NoCaptureState
  396. if "%ECHO_INFO%" == "yes" echo Xperf -stop
  397. "%~dp0"..\Xperf.exe -stop
  398. echo All loggers stopped, starting merge...
  399. "%~dp0"..\Xperf -merge Kernel.etl NoCaptureState.etl CaptureState.etl SchedulingLog.etl Merged.etl
  400. "%~dp0"..\Xperf -setprofint > NUL
  401. echo Output: %~dp0Merged.etl
  402. call :DeleteIntermediate Kernel.etl
  403. call :DeleteIntermediate NoCaptureState.etl
  404. call :DeleteIntermediate CaptureState.etl
  405. call :DeleteIntermediate SchedulingLog.etl
  406. goto EndIt
  407.  
  408. :StopMin
  409. call :StopProviders
  410. @echo off
  411. set TLOG=
  412. goto EndIt
  413.  
  414. :StopPresent
  415. call :StopProviders
  416. @echo off
  417. set TLOG=
  418. goto EndIt
  419.  
  420. :StopLight
  421. call :StopProviders
  422. @echo off
  423. set TLOG=
  424. goto EndIt
  425.  
  426. :StopNormal
  427. call :StopProviders
  428. @echo off
  429. set TLOG=
  430. goto EndIt
  431.  
  432. :StopVerbose
  433. call :StopProviders
  434. @echo off
  435. set TLOG=
  436. goto EndIt
  437.  
  438.  
  439. REM
  440. REM Error message section.
  441. REM
  442.  
  443. :CLUsage
  444. echo Error: Invalid command line argument.
  445. goto EndIt
  446.  
  447.  
  448. :GetPhysicalMemory
  449. systeminfo > me.txt
  450. findstr /sipn /C:"Total Physical Memory" me.txt > me2.txt
  451. REM TRACE_LOGGING_MEMORY will hold the amount of physical memory on this machine.
  452. for /f "tokens=6 delims=: " %%a in (me2.txt) do set TRACE_LOGGING_MEMORY=%%a
  453. del me.txt
  454. del me2.txt
  455. set TRACE_LOGGING_MEMORY=%TRACE_LOGGING_MEMORY:,=%
  456. goto :eof
  457.  
  458. :EndIt
  459.  
  460. REM Are we still logging?
  461. if not "%TLOG%"=="" goto CLEANUP
  462. goto Exit_File
  463. :CLEANUP
  464.  
  465. set TRACE_MIRAGE=
  466. set TRACE_DHD=
  467. set TRACE_DXVA2=
  468. set TRACE_MMCSS=
  469. set TRACE_WMDRM=
  470. set TRACE_WME=
  471. set TRACE_WMP=
  472. set TRACE_DVD=
  473. set TRACE_DSHOW=
  474. set TRACE_MF=
  475. set TRACE_AE=
  476. set TRACE_HME=
  477. set TRACE_HDDVD=
  478. set TRACE_DWMAPIGUID=
  479. set TRACE_SCHEDULEGUID=
  480. set TRACE_DX=
  481. set TRACE_VR=
  482. set TRACE_WARP=
  483. set TRACE_DXGI=
  484. set TRACE_DXGIDEBUG=
  485. set TRACE_DXGIDEBUG_LIGHT=
  486. set TRACE_DXGIDEBUG_NORMAL=
  487. set TRACE_DXGIDEBUG_VERBOSE=
  488. set TRACE_DXCORE=
  489. set TRACE_D3D11ON12=
  490. set TRACE_D3D9ON12=
  491. set TRACE_D3D12=
  492. set TRACE_D3D11=
  493. set TRACE_D3D10LEVEL9=
  494. set TRACE_D3DSCACHE=
  495. set TRACE_DXC=
  496. set TRACE_DXC_ALL=
  497. set TRACE_DXC_LONGHAUL=
  498. set TRACE_DXC_MIN=
  499. set TRACE_DXC_LIGHT=
  500. set TRACE_DXC_NORMAL=
  501. set TRACE_DXC_STACKS=
  502. set TRACE_UMD=
  503. set TRACE_DWM=
  504. set TRACE_DWM2=
  505. set TRACE_DWM3=
  506. set TRACE_CODEC=
  507. set TRACE_KMFD=
  508. set TRACE_UMFD=
  509. set TRACE_TESTFRAMEWORK=
  510. set TRACE_TEST=
  511. set TRACE_SC=
  512. set TRACE_XAML=
  513. set TRACE_WIN32K=
  514. set TRACE_D2D=
  515. set TRACE_D2DSCENARIOS=
  516. set TRACE_MLSD=
  517.  
  518. set TRACE_D3D9_PRESENT=
  519. set TRACE_DXGI_PRESENT=
  520. set TRACE_D3D11_PRESENT=
  521. set TRACE_DXC_ALL_PRESENT=
  522. set TRACE_DXC_PRESENT=
  523.  
  524. set TRACE_LARGE_BUFFERS=
  525. set TRACE_STAND_BUFFERS=
  526. set TRACE_NT_LONGHAUL=
  527. set TRACE_NT_MIN=
  528. set TRACE_NT_LIGHT=
  529. set TRACE_NT_NORMAL=
  530. set TRACE_NT_VERBOSE=
  531.  
  532. set TRACE_CS_PROVIDERS_MIN=
  533. set TRACE_CS_PROVIDERS_PRESENT=
  534. set TRACE_CS_PROVIDERS_LIGHT=
  535. set TRACE_CS_PROVIDERS_NORMAL=
  536. set TRACE_CS_PROVIDERS_VERBOSE=
  537. set TRACE_CS_STATE_MIN=
  538. set TRACE_CS_STATE_PRESENT=
  539. set TRACE_CS_STATE_LIGHT=
  540. set TRACE_CS_STATE_NORMAL=
  541. set TRACE_CS_STATE_VERBOSE=
  542. set TRACE_NOCS_PROVIDERS_MIN=
  543. set TRACE_NOCS_PROVIDERS_PRESENT=
  544. set TRACE_NOCS_PROVIDERS_LIGHT=
  545. set TRACE_NOCS_PROVIDERS_NORMAL=
  546. set TRACE_NOCS_PROVIDERS_VERBOSE=
  547. SET TRACE_NOCS_PROVIDERS_LIGHT_NODXGIDEBUG=
  548. SET TRACE_NOCS_PROVIDERS_NORMAL_NODXGIDEBUG=
  549. SET TRACE_NOCS_PROVIDERS_VERBOSE_NODXGIDEBUG=
  550.  
  551. set ECHO_INFO=
  552.  
  553. set TRACE_NT_PROVIDER=
  554. set TRACE_CS_PROVIDERS=
  555. set TRACE_CS_STATE=
  556. set TRACE_NOCS_PROVIDERS=
  557. goto :Exit_File
  558.  
  559. :DeleteIntermediate
  560. if exist "%~dp0%~1" del "%~dp0%~1"
  561. goto :EOF
  562.  
  563. :Exit_File
  564. @echo on
  565.  
  566.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement