Merge vk-gl-cts/vulkan-cts-1.3.1 into vk-gl-cts/vulkan-cts-1.3.2
[platform/upstream/VK-GL-CTS.git] / doc / qpa_file_format.txt
1
2 ***** QPA FILE FORMAT ******
3
4 Date: 21st March 2013
5
6 The QPA file is a combination of two formats:
7 - Container format is the outer format that runs through test
8   executable life time
9 - Per case XML-based log is stored for each test case within
10   the container format
11
12 The best additional reference is the code used to handle the logs as
13 well as sample .qpa file. See framework/qphelper/qpTestLog.c, for
14 example. Also, executor/xeTestLogParser.cpp will be a helful.
15
16 The descriptions below flow in the order the items appear in normal
17 log files. Comments are prefixed with an asterisk ('*').
18
19 === Container format ===
20
21 * Container format starts with multiple entries of form:
22
23 #sessionInfo [key] [value]
24
25 * The session info entries do not have fixed order.
26 * Info header keys written by a test binary are listed below.
27 releaseName
28 releaseId
29 targetName
30
31 * Candy writes and reads the following additional keys:
32 candyTargetName
33 resultName
34 timestamp
35 configName
36
37 * Additional header values will be added as needed.
38
39 * The test binary starts actual execution by outputting:
40 #beginSession
41
42 * Each test case looks like:
43 #beginTestCaseResult <name of the test case>
44 <Test Case Log - see the separate section below>
45 #endTestCaseResult or #terminateTestCaseResult <cause>
46
47 * After test cases, tests time summary is added
48 #beginTestsCasesTime <section with time summary>
49 #endTestsCasesTime <end of time summary section>
50
51 * Execution done
52 #endSession
53
54
55 === Test Case Log ===
56
57 * XML log can be incomplete due to, e.g., crash. Please, use a SAX
58   parser as they can work with incomplete XML.
59
60 * First start the XML stream and open the TestCaseResult element. All
61   other elements go into the TestCaseResult element.
62
63 <?xml version="1.0"?>
64
65 <TestCaseResult Version="0.3.2" CasePath="[path]" CaseType="[type]">
66 [path] = Full name of the test case. Groups separated with periods ('.')
67 [type] = SelfValidate,Performance,Accuracy,Capability
68 The version will be increased any time changes to the format are made.
69
70 * After this point there'll be a mix of following elements. Order
71   corresponds to the execution of the test case.  All of the elements
72   below may contain attributes Name and Description, which will have
73   appropriate strings as values. Not all elements will have Name and
74   Description.
75
76
77 <Text>[string]</Text>
78
79
80 <Number Tag="[tag]" Unit="[string]">[float]</Number>
81 [tag] = Performance,Quality,Precision,Time
82
83
84 <ShaderProgram LinkStatus="[status]">
85     <VertexShader CompileStatus="[status]">
86         <ShaderSource>[string]</ShaderSource>
87                 <InfoLog>[string]</InfoLog>
88     </VertexShader>
89     <FragmentShader CompileStatus="[status]">
90         <ShaderSource>[string]</ShaderSource>
91                 <InfoLog>[string]</InfoLog>
92     </FragmentShader>
93     <InfoLog>[string]</InfoLog>
94 </ShaderProgram>
95 [status] = OK,Fail
96 InfoLogs are the outputs from the GLES log query functions.
97
98
99 <EglConfigSet>
100     <EglConfig BufferSize="[int]"
101                            RedSize="[int]"
102                            GreenSize="[int]"
103                            BlueSize="[int]"
104                            LuminanceSize="[int]"
105                            AlphaSize="[int]"
106                            AlphaMaskSize="[int]"
107                            BindToTextureRGB="[bool]"
108                            BindToTextureRGBA="[bool]"
109                            ColorBufferType="[string]"
110                            ConfigCaveat="[string]"
111                            ConfigID="[int]"
112                            Conformant="[string]"
113                            DepthSize="[int]"
114                            Level="[int]"
115                            MaxPBufferWidth="[int]"
116                            MaxPBufferHeight="[int]"
117                            MaxPBufferPixels="[int]"
118                            MaxSwapInterval="[int]"
119                            MinSwapInterval="[int]"
120                            NativeRenderable="[bool]"
121                            RenderableType="[string]"
122                            SampleBuffers="[int]"
123                            Samples="[int]"
124                            StencilSize="[int]"
125                            SurfaceTypes="[int]"
126                            TransparentType="[int]"
127                            TransparentRedValue="[int]"
128                            TransparentGreenValue="[int]"
129                            TransparentBlueValue="[int]"/>
130 </EglConfigSet>
131 [bool] = True,False
132
133
134 <KernelSource>[string]</KernelSource>
135 OpenCL kernel
136
137
138 <CompileInfo CompileStatus="[status]">[string]</CompileInfo>
139 [status] = OK,Fail
140 Compile info for OpenCL kernel
141
142
143 <ImageSet>[One or more related images]</ImageSet>
144
145
146 <Image Width="[int]"
147        Height="[int]"
148            Format="[format]"
149            CompressionMode="[compression]">
150     [base64 encoded data]
151 </Image>
152 [format] = RGB888,RGBA8888
153 [compression] = None,PNG
154
155
156 <Section>[any of the above log elements and section elements]</Section>
157
158
159 * If the test finishes so that the framework has control, the Result
160   element is inserted.
161
162  <Result StatusCode="[status]">[Details string]</Result>
163 [status] =
164                 Pass,                                   // Test case passed.
165                 Fail,                                   // Test case failed (not passed).
166                 QualityWarning,                 // Result within specification, but suspicious quality wise
167                 CompatibilityWarning,   // Result within specification, but likely to cause fragmentation
168                 NotSupported,                   // Some feature was not supported in the implementation.
169                 ResourceError,                  // A resource error has occurred.
170                 InternalError,                  // An internal error has occurred.
171 [Details string] = Further details or measured value as float for Performance and Accuracy cases.
172
173 * We are done, let's close the TestCaseResult element
174
175 </TestCaseResult>