Merge remote-tracking branch 'aosp/master' into deqp-dev
[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 * Execution done
48 #endSession
49
50
51 === Test Case Log ===
52
53 * XML log can be incomplete due to, e.g., crash. Please, use a SAX
54   parser as they can work with incomplete XML.
55
56 * First start the XML stream and open the TestCaseResult element. All
57   other elements go into the TestCaseResult element.
58
59 <?xml version="1.0"?>
60
61 <TestCaseResult Version="0.3.2" CasePath="[path]" CaseType="[type]">
62 [path] = Full name of the test case. Groups separated with periods ('.')
63 [type] = SelfValidate,Performance,Accuracy,Capability
64 The version will be increased any time changes to the format are made.
65
66 * After this point there'll be a mix of following elements. Order
67   corresponds to the execution of the test case.  All of the elements
68   below may contain attributes Name and Description, which will have
69   appropriate strings as values. Not all elements will have Name and
70   Description.
71
72
73 <Text>[string]</Text>
74
75
76 <Number Tag="[tag]" Unit="[string]">[float]</Number>
77 [tag] = Performance,Quality,Precision,Time
78
79
80 <ShaderProgram LinkStatus="[status]">
81     <VertexShader CompileStatus="[status]">
82         <ShaderSource>[string]</ShaderSource>
83                 <InfoLog>[string]</InfoLog>
84     </VertexShader>
85     <FragmentShader CompileStatus="[status]">
86         <ShaderSource>[string]</ShaderSource>
87                 <InfoLog>[string]</InfoLog>
88     </FragmentShader>
89     <InfoLog>[string]</InfoLog>
90 </ShaderProgram>
91 [status] = OK,Fail
92 InfoLogs are the outputs from the GLES log query functions.
93
94
95 <EglConfigSet>
96     <EglConfig BufferSize="[int]"
97                            RedSize="[int]"
98                            GreenSize="[int]"
99                            BlueSize="[int]"
100                            LuminanceSize="[int]"
101                            AlphaSize="[int]"
102                            AlphaMaskSize="[int]"
103                            BindToTextureRGB="[bool]"
104                            BindToTextureRGBA="[bool]"
105                            ColorBufferType="[string]"
106                            ConfigCaveat="[string]"
107                            ConfigID="[int]"
108                            Conformant="[string]"
109                            DepthSize="[int]"
110                            Level="[int]"
111                            MaxPBufferWidth="[int]"
112                            MaxPBufferHeight="[int]"
113                            MaxPBufferPixels="[int]"
114                            MaxSwapInterval="[int]"
115                            MinSwapInterval="[int]"
116                            NativeRenderable="[bool]"
117                            RenderableType="[string]"
118                            SampleBuffers="[int]"
119                            Samples="[int]"
120                            StencilSize="[int]"
121                            SurfaceTypes="[int]"
122                            TransparentType="[int]"
123                            TransparentRedValue="[int]"
124                            TransparentGreenValue="[int]"
125                            TransparentBlueValue="[int]"/>
126 </EglConfigSet>
127 [bool] = True,False
128
129
130 <KernelSource>[string]</KernelSource>
131 OpenCL kernel
132
133
134 <CompileInfo CompileStatus="[status]">[string]</CompileInfo>
135 [status] = OK,Fail
136 Compile info for OpenCL kernel
137
138
139 <ImageSet>[One or more related images]</ImageSet>
140
141
142 <Image Width="[int]"
143        Height="[int]"
144            Format="[format]"
145            CompressionMode="[compression]">
146     [base64 encoded data]
147 </Image>
148 [format] = RGB888,RGBA8888
149 [compression] = None,PNG
150
151
152 <Section>[any of the above log elements and section elements]</Section>
153
154
155 * If the test finishes so that the framework has control, the Result
156   element is inserted.
157
158  <Result StatusCode="[status]">[Details string]</Result>
159 [status] =
160                 Pass,                                   // Test case passed.
161                 Fail,                                   // Test case failed (not passed).
162                 QualityWarning,                 // Result within specification, but suspicious quality wise
163                 CompatibilityWarning,   // Result within specification, but likely to cause fragmentation
164                 NotSupported,                   // Some feature was not supported in the implementation.
165                 ResourceError,                  // A resource error has occurred.
166                 InternalError,                  // An internal error has occurred.
167 [Details string] = Further details or measured value as float for Performance and Accuracy cases.
168
169 * We are done, let's close the TestCaseResult element
170
171 </TestCaseResult>