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 GroupType
25{
26    APIClearRenderTarget,
27    APIDraw,
28    APIDrawWakeAllThreads,
29    APIDrawIndexed,
30    APIDispatch,
31    APIStoreTiles,
32    APIGetDrawContext,
33    APISync,
34    APIWaitForIdle,
35    FEProcessDraw,
36    FEProcessDrawIndexed,
37    FEFetchShader,
38    FEVertexShader,
39    FEHullShader,
40    FETessellation,
41    FEDomainShader,
42    FEGeometryShader,
43    FEStreamout,
44    FEPAAssemble,
45    FEBinPoints,
46    FEBinLines,
47    FEBinTriangles,
48    FETriangleSetup,
49    FEViewportCull,
50    FEGuardbandClip,
51    FEClipPoints,
52    FEClipLines,
53    FEClipTriangles,
54    FECullZeroAreaAndBackface,
55    FECullBetweenCenters,
56    FEProcessStoreTiles,
57    FEProcessInvalidateTiles,
58    WorkerWorkOnFifoBE,
59    WorkerFoundWork,
60    BELoadTiles,
61    BEDispatch,
62    BEClear,
63    BERasterizeLine,
64    BERasterizeTriangle,
65    BETriangleSetup,
66    BEStepSetup,
67    BECullZeroArea,
68    BEEmptyTriangle,
69    BETrivialAccept,
70    BETrivialReject,
71    BERasterizePartial,
72    BEPixelBackend,
73    BESetup,
74    BEBarycentric,
75    BEEarlyDepthTest,
76    BEPixelShader,
77    BESingleSampleBackend,
78    BEPixelRateBackend,
79    BESampleRateBackend,
80    BENullBackend,
81    BELateDepthTest,
82    BEOutputMerger,
83    BEStoreTiles,
84    BEEndTile,
85    WorkerWaitForThreadEvent,
86};
87
88event Start
89{
90    GroupType type;
91    uint32_t id;
92};
93
94event End
95{
96    GroupType type;
97    uint32_t count;
98};
99
100event ThreadStartApiEvent
101{
102};
103
104event ThreadStartWorkerEvent
105{
106};
107
108event DrawInstancedEvent
109{
110    uint32_t drawId;
111    uint32_t topology;
112    uint32_t numVertices;
113    int32_t  startVertex;
114    uint32_t numInstances;
115    uint32_t startInstance;
116};
117
118event DrawIndexedInstancedEvent
119{
120    uint32_t drawId;
121    uint32_t topology;
122    uint32_t numIndices;
123    int32_t  indexOffset;
124    int32_t  baseVertex;
125    uint32_t numInstances;
126    uint32_t startInstance;
127};
128
129event DispatchEvent
130{
131    uint32_t drawId;
132    uint32_t threadGroupCountX;
133    uint32_t threadGroupCountY;
134    uint32_t threadGroupCountZ;
135};
136
137event FrameEndEvent
138{
139    uint32_t frameId;
140    uint32_t nextDrawId;
141};
142
143event FrontendStatsEvent
144{
145    uint32_t drawId;
146    uint64_t IaVertices;
147    uint64_t IaPrimitives;
148    uint64_t VsInvocations;
149    uint64_t HsInvocations;
150    uint64_t DsInvocations;
151    uint64_t GsInvocations;
152    uint64_t GsPrimitives;
153    uint64_t CInvocations;
154    uint64_t CPrimitives;
155    uint64_t SoPrimStorageNeeded0;
156    uint64_t SoPrimStorageNeeded1;
157    uint64_t SoPrimStorageNeeded2;
158    uint64_t SoPrimStorageNeeded3;
159    uint64_t SoNumPrimsWritten0;
160    uint64_t SoNumPrimsWritten1;
161    uint64_t SoNumPrimsWritten2;
162    uint64_t SoNumPrimsWritten3;
163};
164
165event BackendStatsEvent
166{
167    uint32_t drawId;
168    uint64_t DepthPassCount;
169    uint64_t PsInvocations;
170    uint64_t CsInvocations;
171
172};
173
174event EarlyDepthStencilInfoSingleSample
175{
176	uint64_t depthPassMask;
177	uint64_t stencilPassMask;
178	uint64_t coverageMask;
179};
180
181event EarlyDepthStencilInfoSampleRate
182{
183	uint64_t depthPassMask;
184	uint64_t stencilPassMask;
185	uint64_t coverageMask;
186};
187
188event EarlyDepthStencilInfoNullPS
189{
190	uint64_t depthPassMask;
191	uint64_t stencilPassMask;
192	uint64_t coverageMask;
193};
194
195event LateDepthStencilInfoSingleSample
196{
197	uint64_t depthPassMask;
198	uint64_t stencilPassMask;
199	uint64_t coverageMask;
200};
201
202event LateDepthStencilInfoSampleRate
203{
204	uint64_t depthPassMask;
205	uint64_t stencilPassMask;
206	uint64_t coverageMask;
207};
208
209event LateDepthStencilInfoNullPS
210{
211	uint64_t depthPassMask;
212	uint64_t stencilPassMask;
213	uint64_t coverageMask;
214};
215
216event EarlyDepthInfoPixelRate
217{
218	uint64_t depthPassCount;
219	uint64_t activeLanes;
220};
221
222
223event LateDepthInfoPixelRate
224{
225	uint64_t depthPassCount;
226	uint64_t activeLanes;
227};
228
229
230event BackendDrawEndEvent
231{
232	uint32_t drawId;
233};
234
235event FrontendDrawEndEvent
236{
237	uint32_t drawId;
238};
239
240event EarlyZSingleSample
241{
242	uint32_t drawId;
243	uint64_t passCount;
244	uint64_t failCount;
245	uint64_t testCount;
246};
247
248event LateZSingleSample
249{
250	uint32_t drawId;
251	uint64_t passCount;
252	uint64_t failCount;
253	uint64_t testCount;
254};
255
256event EarlyStencilSingleSample
257{
258	uint32_t drawId;
259	uint64_t passCount;
260	uint64_t failCount;
261	uint64_t testCount;
262};
263
264event LateStencilSingleSample
265{
266	uint32_t drawId;
267	uint64_t passCount;
268	uint64_t failCount;
269	uint64_t testCount;
270};
271
272event EarlyZSampleRate
273{
274	uint32_t drawId;
275	uint64_t passCount;
276	uint64_t failCount;
277	uint64_t testCount;
278};
279
280event LateZSampleRate
281{
282	uint32_t drawId;
283	uint64_t passCount;
284	uint64_t failCount;
285	uint64_t testCount;
286};
287
288event EarlyStencilSampleRate
289{
290	uint32_t drawId;
291	uint64_t passCount;
292	uint64_t failCount;
293	uint64_t testCount;
294};
295
296event LateStencilSampleRate
297{
298	uint32_t drawId;
299	uint64_t passCount;
300	uint64_t failCount;
301	uint64_t testCount;
302};
303
304event EarlyZNullPS
305{
306	uint32_t drawId;
307	uint64_t passCount;
308	uint64_t failCount;
309	uint64_t testCount;
310};
311
312event EarlyStencilNullPS
313{
314	uint32_t drawId;
315	uint64_t passCount;
316	uint64_t failCount;
317	uint64_t testCount;
318};
319
320event EarlyZPixelRate
321{
322	uint32_t drawId;
323	uint64_t passCount;
324	uint64_t failCount;
325	uint64_t testCount;
326};
327
328event LateZPixelRate
329{
330	uint32_t drawId;
331	uint64_t passCount;
332	uint64_t failCount;
333	uint64_t testCount;
334};
335
336
337event EarlyOmZ
338{
339	uint32_t drawId;
340	uint64_t passCount;
341	uint64_t failCount;
342	uint64_t testCount;
343};
344
345event EarlyOmStencil
346{
347	uint32_t drawId;
348	uint64_t passCount;
349	uint64_t failCount;
350	uint64_t testCount;
351};
352
353event LateOmZ
354{
355	uint32_t drawId;
356	uint64_t passCount;
357	uint64_t failCount;
358	uint64_t testCount;
359};
360
361event LateOmStencil
362{
363	uint32_t drawId;
364	uint64_t passCount;
365	uint64_t failCount;
366	uint64_t testCount;
367};
368
369event GSPrimInfo
370{
371	uint64_t inputPrimCount;
372	uint64_t primGeneratedCount;
373	uint64_t vertsInput;
374};
375
376event GSInputPrims
377{
378	uint32_t drawId;
379	uint64_t inputPrimCount;
380};
381
382event GSPrimsGen
383{
384	uint32_t drawId;
385	uint64_t primGeneratedCount;
386};
387
388event GSVertsInput
389{
390	uint32_t drawId;
391	uint64_t vertsInput;
392};
393
394event ClipVertexCount
395{
396	uint64_t vertsPerPrim;
397	uint64_t primMask;
398};
399
400//REMOVE AND REPLACE
401event FlushVertClip
402{
403	uint32_t drawId;
404};
405
406event VertsClipped
407{
408	uint32_t drawId;
409	uint64_t clipCount;
410};
411
412event TessPrimCount
413{
414	uint64_t primCount;
415};
416
417//REMOVE AND REPLACE
418event TessPrimFlush
419{
420	uint32_t drawId;
421};
422
423event TessPrims
424{
425	uint32_t drawId;
426	uint64_t primCount;
427};