View difference between Paste ID: 76XDZpr8 and 2THuX45b
SHOW: | | - or go back to the newest paste.
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_VR%+%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%
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