1# Copyright (C) 2016 Intel Corporation.   All Rights Reserved.
2#
3# Permission is hereby granted, free of charge, to any person obtaining a
4# copy of this software and associated documentation files (the "Software"),
5# to deal in the Software without restriction, including without limitation
6# the rights to use, copy, modify, merge, publish, distribute, sublicense,
7# and/or sell copies of the Software, and to permit persons to whom the
8# Software is furnished to do so, subject to the following conditions:
9#
10# The above copyright notice and this permission notice (including the next
11# paragraph) shall be included in all copies or substantial portions of the
12# Software.
13#
14# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
17# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20# IN THE SOFTWARE.
21#
22# Provides definitions for events.
23
24enum AR_DRAW_TYPE
25{
26    Instanced = 0,
27    IndexedInstanced = 1,
28    InstancedSplit = 2,
29    IndexedInstancedSplit = 3
30};
31
32event ThreadStartApiEvent
33{
34};
35
36event ThreadStartWorkerEvent
37{
38};
39
40event DrawInfoEvent
41{
42    uint32_t drawId;
43    AR_DRAW_TYPE type;
44    uint32_t topology;
45    uint32_t numVertices;
46    uint32_t numIndices;
47    int32_t  indexOffset;
48    int32_t  baseVertex;
49    uint32_t numInstances;
50    uint32_t startInstance;
51    uint32_t tsEnable;
52    uint32_t gsEnable;
53    uint32_t soEnable;
54    uint32_t soTopology;
55    uint32_t splitId; // Split draw count or id.
56};
57
58event DispatchEvent
59{
60    uint32_t drawId;
61    uint32_t threadGroupCountX;
62    uint32_t threadGroupCountY;
63    uint32_t threadGroupCountZ;
64};
65
66event FrameEndEvent
67{
68    uint32_t frameId;
69    uint32_t nextDrawId;
70};
71
72///@brief API Stat: Synchonization event.
73event SwrSyncEvent
74{
75    uint32_t drawId;
76};
77
78///@brief API Stat: Invalidate hot tiles (i.e. tile cache)
79event SwrInvalidateTilesEvent
80{
81    uint32_t drawId;
82};
83
84///@brief API Stat: Invalidate and discard hot tiles within pixel region
85event SwrDiscardRectEvent
86{
87    uint32_t drawId;
88};
89
90///@brief API Stat: Flush tiles out to memory that is typically owned by driver (e.g. Flush RT cache)
91event SwrStoreTilesEvent
92{
93    uint32_t drawId;
94};
95
96event FrontendStatsEvent
97{
98    uint32_t drawId;
99    uint64_t counter IaVertices;
100    uint64_t counter IaPrimitives;
101    uint64_t counter VsInvocations;
102    uint64_t counter HsInvocations;
103    uint64_t counter DsInvocations;
104    uint64_t counter GsInvocations;
105    uint64_t counter GsPrimitives;
106    uint64_t counter CInvocations;
107    uint64_t counter CPrimitives;
108    uint64_t counter SoPrimStorageNeeded0;
109    uint64_t counter SoPrimStorageNeeded1;
110    uint64_t counter SoPrimStorageNeeded2;
111    uint64_t counter SoPrimStorageNeeded3;
112    uint64_t counter SoNumPrimsWritten0;
113    uint64_t counter SoNumPrimsWritten1;
114    uint64_t counter SoNumPrimsWritten2;
115    uint64_t counter SoNumPrimsWritten3;
116};
117
118event BackendStatsEvent
119{
120    uint32_t drawId;
121    uint64_t counter DepthPassCount;
122    uint64_t counter PsInvocations;
123    uint64_t counter CsInvocations;
124
125};
126
127event EarlyZSingleSample
128{
129    uint32_t drawId;
130    uint64_t counter passCount;
131    uint64_t counter failCount;
132};
133
134event LateZSingleSample
135{
136    uint32_t drawId;
137    uint64_t counter passCount;
138    uint64_t counter failCount;
139};
140
141event EarlyStencilSingleSample
142{
143    uint32_t drawId; 
144    uint64_t counter passCount;
145    uint64_t counter failCount;
146};
147
148event LateStencilSingleSample
149{
150    uint32_t drawId; 
151    uint64_t counter passCount;
152    uint64_t counter failCount;
153};
154
155event EarlyZSampleRate
156{
157    uint32_t drawId;
158    uint64_t counter passCount;
159    uint64_t counter failCount;
160};
161
162event LateZSampleRate
163{
164    uint32_t drawId;
165    uint64_t counter passCount;
166    uint64_t counter failCount;
167};
168
169event EarlyStencilSampleRate
170{
171    uint32_t drawId; 
172    uint64_t counter passCount;
173    uint64_t counter failCount;
174};
175
176event LateStencilSampleRate
177{
178    uint32_t drawId; 
179    uint64_t counter passCount;
180    uint64_t counter failCount;
181};
182
183// Total Early-Z counts, SingleSample and SampleRate
184event EarlyZ
185{
186    uint32_t drawId;
187    uint64_t counter passCount;
188    uint64_t counter failCount;
189};
190
191// Total LateZ counts, SingleSample and SampleRate
192event LateZ
193{
194    uint32_t drawId;
195    uint64_t counter passCount;
196    uint64_t counter failCount;
197};
198
199// Total EarlyStencil counts, SingleSample and SampleRate
200event EarlyStencil
201{
202    uint32_t drawId; 
203    uint64_t counter passCount;
204    uint64_t counter failCount;
205};
206
207// Total LateStencil counts, SingleSample and SampleRate
208event LateStencil
209{
210    uint32_t drawId; 
211    uint64_t counter passCount;
212    uint64_t counter failCount;
213};
214
215event EarlyZNullPS
216{
217    uint32_t drawId;
218    uint64_t counter passCount;
219    uint64_t counter failCount;
220};
221
222event EarlyStencilNullPS
223{
224    uint32_t drawId; 
225    uint64_t counter passCount;
226    uint64_t counter failCount;
227};
228
229event EarlyZPixelRate
230{
231    uint32_t drawId;
232    uint64_t counter passCount;
233    uint64_t counter failCount;
234};
235
236event LateZPixelRate
237{
238    uint32_t drawId;
239    uint64_t counter passCount;
240    uint64_t counter failCount;
241};
242
243
244event EarlyOmZ
245{
246    uint32_t drawId;
247    uint64_t counter passCount;
248    uint64_t counter failCount;
249};
250
251event EarlyOmStencil
252{
253    uint32_t drawId;
254    uint64_t counter passCount;
255    uint64_t counter failCount;
256};
257
258event LateOmZ
259{
260    uint32_t drawId;
261    uint64_t counter passCount;
262    uint64_t counter failCount;
263};
264
265event LateOmStencil
266{
267    uint32_t drawId;
268    uint64_t counter passCount;
269    uint64_t counter failCount;
270};
271
272event GSInputPrims
273{
274    uint32_t drawId;
275    uint64_t counter inputPrimCount;
276};
277
278event GSPrimsGen
279{
280    uint32_t drawId;
281    uint64_t counter primGeneratedCount;
282};
283
284event GSVertsInput
285{
286    uint32_t drawId;
287    uint64_t counter vertsInput;
288};
289
290event TessPrims
291{
292    uint32_t drawId;
293    uint64_t counter primCount;
294};
295
296event RasterTiles
297{
298    uint32_t drawId;
299    uint32_t counter rastTileCount;
300};
301
302event ClipperEvent
303{
304    uint32_t drawId;
305    uint32_t counter trivialRejectCount;
306    uint32_t counter trivialAcceptCount;
307    uint32_t counter mustClipCount;
308};
309
310event CullEvent
311{
312    uint32_t drawId;
313    uint64_t counter backfacePrimCount;
314    uint64_t counter degeneratePrimCount;
315};
316
317event AlphaEvent
318{
319    uint32_t drawId;
320    uint32_t counter alphaTestCount;
321    uint32_t counter alphaBlendCount;
322};
323
324event VSInfo
325{
326    uint32_t drawId;
327    uint32_t counter numInstExecuted;
328    uint32_t counter numSampleExecuted;
329    uint32_t counter numSampleLExecuted;
330    uint32_t counter numSampleBExecuted;
331    uint32_t counter numSampleCExecuted;
332    uint32_t counter numSampleCLZExecuted;
333    uint32_t counter numSampleCDExecuted;
334    uint32_t counter numGather4Executed;
335    uint32_t counter numGather4CExecuted;
336    uint32_t counter numGather4CPOExecuted;
337    uint32_t counter numGather4CPOCExecuted;
338    uint32_t counter numLodExecuted;
339};
340
341event HSInfo
342{
343    uint32_t drawId;
344    uint32_t counter numInstExecuted;
345    uint32_t counter numSampleExecuted;
346    uint32_t counter numSampleLExecuted;
347    uint32_t counter numSampleBExecuted;
348    uint32_t counter numSampleCExecuted;
349    uint32_t counter numSampleCLZExecuted;
350    uint32_t counter numSampleCDExecuted;
351    uint32_t counter numGather4Executed;
352    uint32_t counter numGather4CExecuted;
353    uint32_t counter numGather4CPOExecuted;
354    uint32_t counter numGather4CPOCExecuted;
355    uint32_t counter numLodExecuted;
356};
357
358event DSInfo
359{
360    uint32_t drawId;
361    uint32_t counter numInstExecuted;
362    uint32_t counter numSampleExecuted;
363    uint32_t counter numSampleLExecuted;
364    uint32_t counter numSampleBExecuted;
365    uint32_t counter numSampleCExecuted;
366    uint32_t counter numSampleCLZExecuted;
367    uint32_t counter numSampleCDExecuted;
368    uint32_t counter numGather4Executed;
369    uint32_t counter numGather4CExecuted;
370    uint32_t counter numGather4CPOExecuted;
371    uint32_t counter numGather4CPOCExecuted;
372    uint32_t counter numLodExecuted;
373};
374
375event GSInfo
376{
377    uint32_t drawId;
378    uint32_t counter numInstExecuted;
379    uint32_t counter numSampleExecuted;
380    uint32_t counter numSampleLExecuted;
381    uint32_t counter numSampleBExecuted;
382    uint32_t counter numSampleCExecuted;
383    uint32_t counter numSampleCLZExecuted;
384    uint32_t counter numSampleCDExecuted;
385    uint32_t counter numGather4Executed;
386    uint32_t counter numGather4CExecuted;
387    uint32_t counter numGather4CPOExecuted;
388    uint32_t counter numGather4CPOCExecuted;
389    uint32_t counter numLodExecuted;
390
391};
392
393event PSInfo
394{
395    uint32_t drawId;
396    uint32_t counter numInstExecuted;
397    uint32_t counter numSampleExecuted;
398    uint32_t counter numSampleLExecuted;
399    uint32_t counter numSampleBExecuted;
400    uint32_t counter numSampleCExecuted;
401    uint32_t counter numSampleCLZExecuted;
402    uint32_t counter numSampleCDExecuted;
403    uint32_t counter numGather4Executed;
404    uint32_t counter numGather4CExecuted;
405    uint32_t counter numGather4CPOExecuted;
406    uint32_t counter numGather4CPOCExecuted;
407    uint32_t counter numLodExecuted;
408};
409
410event CSInfo
411{
412    uint32_t drawId;
413    uint32_t counter numInstExecuted;
414    uint32_t counter numSampleExecuted;
415    uint32_t counter numSampleLExecuted;
416    uint32_t counter numSampleBExecuted;
417    uint32_t counter numSampleCExecuted;
418    uint32_t counter numSampleCLZExecuted;
419    uint32_t counter numSampleCDExecuted;
420    uint32_t counter numGather4Executed;
421    uint32_t counter numGather4CExecuted;
422    uint32_t counter numGather4CPOExecuted;
423    uint32_t counter numGather4CPOCExecuted;
424    uint32_t counter numLodExecuted;
425};
426
427event SWTagFrameEvent
428{
429	uint64_t swTagFrame;
430};
431
432event SWTagRenderpassEvent
433{
434	uint64_t swTagFrame;
435	uint32_t swTagDrawOrDispatch;
436	uint32_t swTagDraw;
437	uint32_t swTagDispatch;
438	uint32_t swTagRenderpassCount;
439};
440
441event SWTagDrawEvent
442{
443	uint64_t swTagFrame;
444	uint32_t swTagDrawOrDispatch;
445	uint32_t swTagDraw;
446	uint32_t swTagDispatch;
447};
448
449event SWTagDispatchEvent
450{
451	uint64_t swTagFrame;
452	uint32_t swTagDrawOrDispatch;
453	uint32_t swTagDraw;
454	uint32_t swTagDispatch;
455};
456
457event SWTagFlushEvent
458{
459	uint64_t swTagFrame;
460	uint32_t swTagDrawOrDispatch;
461	uint32_t swTagDraw;
462	uint32_t swTagDispatch;
463	uint32_t swTagFlushCounter;
464    char swTagFlushReason[256];
465    uint32_t swTagFlushType;
466};