Import dEQP.
[platform/upstream/VK-GL-CTS.git] / scripts / caselist_diff.py
1 # -*- coding: utf-8 -*-
2
3 import sys
4
5 RENAME_LIST_2011_1_2011_2 = [
6         ("dEQP-GLES2.functional.shaders.random.basic_expressions.*",                    "dEQP-GLES2.functional.shaders.random.basic_expression."),
7         ("dEQP-GLES2.functional.shaders.random.scalar_conversions.*",                   "dEQP-GLES2.functional.shaders.random.scalar_conversion."),
8         ("dEQP-GLES2.functional.fbo.render.color_clears_*",                                             "dEQP-GLES2.functional.fbo.render.color_clear."),
9         ("dEQP-GLES2.functional.fbo.render.intersecting_quads_*",                               "dEQP-GLES2.functional.fbo.render.depth."),
10         ("dEQP-GLES2.functional.fbo.render.mix_*",                                                              "dEQP-GLES2.functional.fbo.render.color.mix_"),
11         ("dEQP-GLES2.functional.fbo.render.blend_*",                                                    "dEQP-GLES2.functional.fbo.render.color.blend_"),
12         ("dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clears_*",                "dEQP-GLES2.functional.fbo.render.shared_colorbuffer_clear."),
13         ("dEQP-GLES2.functional.fbo.render.shared_colorbuffer_*",                               "dEQP-GLES2.functional.fbo.render.shared_colorbuffer."),
14         ("dEQP-GLES2.functional.fbo.render.shared_depthbuffer_*",                               "dEQP-GLES2.functional.fbo.render.shared_depthbuffer."),
15         ("dEQP-GLES2.functional.fbo.render.texsubimage_*",                                              "dEQP-GLES2.functional.fbo.render.texsubimage."),
16         ("dEQP-GLES2.functional.fbo.render.recreate_colorbuffer_*",                             "dEQP-GLES2.functional.fbo.render.recreate_colorbuffer.no_rebind_"),
17         ("dEQP-GLES2.functional.fbo.render.recreate_depthbuffer_*",                             "dEQP-GLES2.functional.fbo.render.recreate_depthbuffer.no_rebind_"),
18         ("dEQP-GLES2.functional.fbo.render.resize_*",                                                   "dEQP-GLES2.functional.fbo.render.resize.")
19 ]
20
21 RENAME_LIST_2011_2_2011_3 = [
22         ("dEQP-GLES2.usecases.ui.src_over_linear_1_batched",                    "dEQP-GLES2.usecases.ui.src_over_linear_batched_1"),
23         ("dEQP-GLES2.usecases.ui.src_over_linear_2_batched",                    "dEQP-GLES2.usecases.ui.src_over_linear_batched_2"),
24         ("dEQP-GLES2.usecases.ui.src_over_linear_4_batched",                    "dEQP-GLES2.usecases.ui.src_over_linear_batched_4"),
25         ("dEQP-GLES2.usecases.ui.src_over_nearest_1_batched",                   "dEQP-GLES2.usecases.ui.src_over_nearest_batched_1"),
26         ("dEQP-GLES2.usecases.ui.src_over_nearest_2_batched",                   "dEQP-GLES2.usecases.ui.src_over_nearest_batched_2"),
27         ("dEQP-GLES2.usecases.ui.src_over_nearest_4_batched",                   "dEQP-GLES2.usecases.ui.src_over_nearest_batched_4"),
28         ("dEQP-GLES2.usecases.ui.premultiplied_src_over_linear_1_batched",      "dEQP-GLES2.usecases.ui.premultiplied_src_over_linear_batched_1"),
29         ("dEQP-GLES2.usecases.ui.premultiplied_src_over_linear_2_batched",      "dEQP-GLES2.usecases.ui.premultiplied_src_over_linear_batched_2"),
30         ("dEQP-GLES2.usecases.ui.premultiplied_src_over_linear_4_batched",      "dEQP-GLES2.usecases.ui.premultiplied_src_over_linear_batched_4"),
31         ("dEQP-GLES2.usecases.ui.premultiplied_src_over_nearest_1_batched",     "dEQP-GLES2.usecases.ui.premultiplied_src_over_nearest_batched_1"),
32         ("dEQP-GLES2.usecases.ui.premultiplied_src_over_nearest_2_batched",     "dEQP-GLES2.usecases.ui.premultiplied_src_over_nearest_batched_2"),
33         ("dEQP-GLES2.usecases.ui.premultiplied_src_over_nearest_4_batched",     "dEQP-GLES2.usecases.ui.premultiplied_src_over_nearest_batched_4"),
34         ("dEQP-GLES2.usecases.ui.no_blend_linear_1_batched",                    "dEQP-GLES2.usecases.ui.no_blend_linear_batched_1"),
35         ("dEQP-GLES2.usecases.ui.no_blend_linear_2_batched",                    "dEQP-GLES2.usecases.ui.no_blend_linear_batched_2"),
36         ("dEQP-GLES2.usecases.ui.no_blend_linear_4_batched",                    "dEQP-GLES2.usecases.ui.no_blend_linear_batched_4"),
37         ("dEQP-GLES2.usecases.ui.no_blend_nearest_1_batched",                   "dEQP-GLES2.usecases.ui.no_blend_nearest_batched_1"),
38         ("dEQP-GLES2.usecases.ui.no_blend_nearest_2_batched",                   "dEQP-GLES2.usecases.ui.no_blend_nearest_batched_2"),
39         ("dEQP-GLES2.usecases.ui.no_blend_nearest_4_batched",                   "dEQP-GLES2.usecases.ui.no_blend_nearest_batched_4")
40 ]
41
42 RENAME_LIST_2011_3_2011_4 = []
43
44 RENAME_LIST_2011_4_2012_1 = [
45         ("dEQP-GLES2.functional.vertex_arrays.multiple_attributes.output_types.*", "dEQP-GLES2.functional.vertex_arrays.multiple_attributes.input_types."),
46 ]
47
48 RENAME_LIST_2012_2_2012_3 = [
49         ("dEQP-GLES2.functional.shaders.operator.geometric.refract.mediump_float_vertex",       "dEQP-GLES2.functional.shaders.operator.geometric.refract.mediump_float_float_vertex"),
50         ("dEQP-GLES2.functional.shaders.operator.geometric.refract.mediump_float_fragment",             "dEQP-GLES2.functional.shaders.operator.geometric.refract.mediump_float_float_fragment"),
51         ("dEQP-GLES2.functional.shaders.operator.geometric.refract.highp_float_vertex",         "dEQP-GLES2.functional.shaders.operator.geometric.refract.highp_float_float_vertex"),
52         ("dEQP-GLES2.functional.shaders.operator.geometric.refract.highp_float_fragment",       "dEQP-GLES2.functional.shaders.operator.geometric.refract.highp_float_float_fragment"),
53         ("dEQP-GLES2.functional.shaders.operator.geometric.refract.mediump_vec2_vertex",        "dEQP-GLES2.functional.shaders.operator.geometric.refract.mediump_vec2_float_vertex"),
54         ("dEQP-GLES2.functional.shaders.operator.geometric.refract.mediump_vec2_fragment",      "dEQP-GLES2.functional.shaders.operator.geometric.refract.mediump_vec2_float_fragment"),
55         ("dEQP-GLES2.functional.shaders.operator.geometric.refract.highp_vec2_vertex",          "dEQP-GLES2.functional.shaders.operator.geometric.refract.highp_vec2_float_vertex"),
56         ("dEQP-GLES2.functional.shaders.operator.geometric.refract.highp_vec2_fragment",        "dEQP-GLES2.functional.shaders.operator.geometric.refract.highp_vec2_float_fragment"),
57         ("dEQP-GLES2.functional.shaders.operator.geometric.refract.mediump_vec3_vertex",        "dEQP-GLES2.functional.shaders.operator.geometric.refract.mediump_vec3_float_vertex"),
58         ("dEQP-GLES2.functional.shaders.operator.geometric.refract.mediump_vec3_fragment",      "dEQP-GLES2.functional.shaders.operator.geometric.refract.mediump_vec3_float_fragment"),
59         ("dEQP-GLES2.functional.shaders.operator.geometric.refract.highp_vec3_vertex",          "dEQP-GLES2.functional.shaders.operator.geometric.refract.highp_vec3_float_vertex"),
60         ("dEQP-GLES2.functional.shaders.operator.geometric.refract.highp_vec3_fragment",        "dEQP-GLES2.functional.shaders.operator.geometric.refract.highp_vec3_float_fragment"),
61         ("dEQP-GLES2.functional.shaders.operator.geometric.refract.mediump_vec4_vertex",        "dEQP-GLES2.functional.shaders.operator.geometric.refract.mediump_vec4_float_vertex"),
62         ("dEQP-GLES2.functional.shaders.operator.geometric.refract.mediump_vec4_fragment",      "dEQP-GLES2.functional.shaders.operator.geometric.refract.mediump_vec4_float_fragment"),
63         ("dEQP-GLES2.functional.shaders.operator.geometric.refract.highp_vec4_vertex",          "dEQP-GLES2.functional.shaders.operator.geometric.refract.highp_vec4_float_vertex"),
64         ("dEQP-GLES2.functional.shaders.operator.geometric.refract.highp_vec4_fragment",        "dEQP-GLES2.functional.shaders.operator.geometric.refract.highp_vec4_float_fragment"),
65         ("dEQP-GLES2.functional.negative_api.texture.copyteximage2d_unequal_width_height_cube", "dEQP-GLES2.functional.negative_api.texture.copyteximage2d_inequal_width_height_cube"),
66         ("dEQP-GLES2.functional.negative_api.texture.teximage2d_unequal_width_height_cube",             "dEQP-GLES2.functional.negative_api.texture.teximage2d_inequal_width_height_cube"),
67         ("dEQP-GLES2.functional.negative_api.vertex_array.draw_arrays",                                                 "dEQP-GLES2.functional.negative_api.vertex_array.draw_arrays_invalid_program"),
68         ("dEQP-GLES2.functional.negative_api.vertex_array.draw_elemens",                                                "dEQP-GLES2.functional.negative_api.vertex_array.draw_elements_invalid_program"),
69         ("dEQP-GLES2.functional.negative_api.shader.attach_shader_invalid_object",                              "dEQP-GLES2.functional.negative_api.shader.attach_shader"),
70         ("dEQP-GLES2.functional.negative_api.shader.detach_shader_invalid_object",                              "dEQP-GLES2.functional.negative_api.shader.detach_shader"),
71         ("dEQP-GLES2.usecases.shadow.shadowmap.1sample.1_vertex_lights_no_texture",                             "dEQP-GLES2.usecases.shadow.shadowmaps.basic_1sample.1_vertex_lights_no_texture"),
72         ("dEQP-GLES2.usecases.shadow.shadowmap.1sample.2_vertex_lights_no_texture",             "dEQP-GLES2.usecases.shadow.shadowmaps.basic_1sample.2_vertex_lights_no_texture"),
73         ("dEQP-GLES2.usecases.shadow.shadowmap.1sample.4_vertex_lights_no_texture",             "dEQP-GLES2.usecases.shadow.shadowmaps.basic_1sample.4_vertex_lights_no_texture"),
74         ("dEQP-GLES2.usecases.shadow.shadowmap.1sample.1_vertex_lights",                        "dEQP-GLES2.usecases.shadow.shadowmaps.basic_1sample.1_vertex_lights"),
75         ("dEQP-GLES2.usecases.shadow.shadowmap.1sample.2_vertex_lights",                        "dEQP-GLES2.usecases.shadow.shadowmaps.basic_1sample.2_vertex_lights"),
76         ("dEQP-GLES2.usecases.shadow.shadowmap.1sample.4_vertex_lights",                        "dEQP-GLES2.usecases.shadow.shadowmaps.basic_1sample.4_vertex_lights"),
77         ("dEQP-GLES2.usecases.shadow.shadowmap.1sample.1_fragment_lights",                      "dEQP-GLES2.usecases.shadow.shadowmaps.basic_1sample.1_fragment_lights"),
78         ("dEQP-GLES2.usecases.shadow.shadowmap.1sample.2_fragment_lights",                      "dEQP-GLES2.usecases.shadow.shadowmaps.basic_1sample.2_fragment_lights"),
79         ("dEQP-GLES2.usecases.shadow.shadowmap.1sample.4_fragment_lights",                      "dEQP-GLES2.usecases.shadow.shadowmaps.basic_1sample.4_fragment_lights"),
80         ("dEQP-GLES2.usecases.shadow.shadowmap.4sample.1_vertex_lights_no_texture",             "dEQP-GLES2.usecases.shadow.shadowmaps.basic_4sample.1_vertex_lights_no_texture"),
81         ("dEQP-GLES2.usecases.shadow.shadowmap.4sample.2_vertex_lights_no_texture",             "dEQP-GLES2.usecases.shadow.shadowmaps.basic_4sample.2_vertex_lights_no_texture"),
82         ("dEQP-GLES2.usecases.shadow.shadowmap.4sample.4_vertex_lights_no_texture",             "dEQP-GLES2.usecases.shadow.shadowmaps.basic_4sample.4_vertex_lights_no_texture"),
83         ("dEQP-GLES2.usecases.shadow.shadowmap.4sample.1_vertex_lights",                        "dEQP-GLES2.usecases.shadow.shadowmaps.basic_4sample.1_vertex_lights"),
84         ("dEQP-GLES2.usecases.shadow.shadowmap.4sample.2_vertex_lights",                        "dEQP-GLES2.usecases.shadow.shadowmaps.basic_4sample.2_vertex_lights"),
85         ("dEQP-GLES2.usecases.shadow.shadowmap.4sample.4_vertex_lights",                        "dEQP-GLES2.usecases.shadow.shadowmaps.basic_4sample.4_vertex_lights"),
86         ("dEQP-GLES2.usecases.shadow.shadowmap.4sample.1_fragment_lights",                      "dEQP-GLES2.usecases.shadow.shadowmaps.basic_4sample.1_fragment_lights"),
87         ("dEQP-GLES2.usecases.shadow.shadowmap.4sample.2_fragment_lights",                      "dEQP-GLES2.usecases.shadow.shadowmaps.basic_4sample.2_fragment_lights"),
88         ("dEQP-GLES2.usecases.shadow.shadowmap.4sample.4_fragment_lights",                      "dEQP-GLES2.usecases.shadow.shadowmaps.basic_4sample.4_fragment_lights"),
89         ("dEQP-GLES2.usecases.shadow.shadowmap.16sample.1_vertex_lights_no_texture",            "dEQP-GLES2.usecases.shadow.shadowmaps.basic_16sample.1_vertex_lights_no_texture"),
90         ("dEQP-GLES2.usecases.shadow.shadowmap.16sample.2_vertex_lights_no_texture",            "dEQP-GLES2.usecases.shadow.shadowmaps.basic_16sample.2_vertex_lights_no_texture"),
91         ("dEQP-GLES2.usecases.shadow.shadowmap.16sample.4_vertex_lights_no_texture",            "dEQP-GLES2.usecases.shadow.shadowmaps.basic_16sample.4_vertex_lights_no_texture"),
92         ("dEQP-GLES2.usecases.shadow.shadowmap.16sample.1_vertex_lights",                       "dEQP-GLES2.usecases.shadow.shadowmaps.basic_16sample.1_vertex_lights"),
93         ("dEQP-GLES2.usecases.shadow.shadowmap.16sample.2_vertex_lights",                       "dEQP-GLES2.usecases.shadow.shadowmaps.basic_16sample.2_vertex_lights"),
94         ("dEQP-GLES2.usecases.shadow.shadowmap.16sample.4_vertex_lights",                       "dEQP-GLES2.usecases.shadow.shadowmaps.basic_16sample.4_vertex_lights"),
95         ("dEQP-GLES2.usecases.shadow.shadowmap.16sample.1_fragment_lights",                     "dEQP-GLES2.usecases.shadow.shadowmaps.basic_16sample.1_fragment_lights"),
96         ("dEQP-GLES2.usecases.shadow.shadowmap.16sample.2_fragment_lights",                     "dEQP-GLES2.usecases.shadow.shadowmaps.basic_16sample.2_fragment_lights"),
97         ("dEQP-GLES2.usecases.shadow.shadowmap.16sample.4_fragment_lights",                     "dEQP-GLES2.usecases.shadow.shadowmaps.basic_16sample.4_fragment_lights")
98 ]
99
100 RENAME_LIST_2012_3_2012_4 = [
101         ("dEQP-GLES2.functional.depth.*",                               "dEQP-GLES2.functional.fragment_ops.depth."),
102         ("dEQP-GLES2.functional.stencil.*",                             "dEQP-GLES2.functional.fragment_ops.stencil.")
103 ]
104
105 def readCaseList (filename):
106         f = open(filename, 'r')
107         cases = []
108         for line in f:
109                 if line[0:5] == "TEST:":
110                         cases.append(line[6:].strip())
111         f.close()
112         return cases
113
114 def isWildcardPattern (pattern):
115         return pattern[-1:] == '*'
116
117 # returns (cases, renames)
118 def renameCases (cases, rename):
119         renamedCases    = []
120         renamedSet              = set()
121         renames                 = []
122         for case in cases:
123                 renamed = None
124
125                 for src, dst in rename:
126                         if isWildcardPattern(src) and case[:len(src)-1] == src[:-1]:
127                                 renamed = dst + case[len(src)-1:]
128                                 break
129                         elif case == src:
130                                 renamed = dst
131                                 break
132
133                 if renamed != None:
134                         renames.append((case, renamed))
135                         case = renamed
136
137                 # It is possible that some later case is renamed to case already seen in the list
138                 assert not case in renamedSet or renamed != None
139                 if case not in renamedSet:
140                         renamedCases.append(case)
141                         renamedSet.add(case)
142
143         return (renamedCases, renames)
144
145 # returns (added, removed) lists
146 def diffCaseLists (old, new):
147         added   = []
148         removed = []
149
150         oldSet = set(old)
151         newSet = set(new)
152
153         # build added list
154         for case in new:
155                 if not case in oldSet:
156                         added.append(case)
157
158         # build removed set
159         for case in old:
160                 if not case in newSet:
161                         removed.append(case)
162
163         return (added, removed)
164
165 if __name__ == "__main__":
166         if len(sys.argv) != 3:
167                 print "%s [old caselist] [new caselist]" % sys.argv[0]
168                 sys.exit(-1)
169
170         oldCases        = readCaseList(sys.argv[1])
171         newCases        = readCaseList(sys.argv[2])
172         rename          = RENAME_LIST_2012_3_2012_4
173
174         renamedCases, renameList        = renameCases(oldCases, rename)
175         added, removed                          = diffCaseLists(renamedCases, newCases)
176
177 #       for src, dst in rename:
178 #               print "RENAME: %s -> %s" % (src, dst)
179
180         for case in added:
181                 print "ADD: %s" % case
182
183         for src, dst in renameList:
184                 print "RENAME: %s -> %s" % (src, dst)
185
186         for case in removed:
187                 print "REMOVE: %s" % case