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