~mmach/netext73/mesa-haswell

« back to all changes in this revision

Viewing changes to src/egl/egl-entrypoint-check.py

  • Committer: mmach
  • Date: 2022-09-22 19:56:13 UTC
  • Revision ID: netbit73@gmail.com-20220922195613-wtik9mmy20tmor0i
2022-09-22 21:17:09

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/env python3
2
 
 
3
 
import argparse
4
 
from generate.eglFunctionList import EGL_FUNCTIONS as GLVND_ENTRYPOINTS
5
 
 
6
 
 
7
 
PREFIX = 'EGL_ENTRYPOINT('
8
 
SUFFIX = ')'
9
 
 
10
 
 
11
 
# These entrypoints should *not* be in the GLVND entrypoints
12
 
GLVND_EXCLUDED_ENTRYPOINTS = [
13
 
        # EGL_KHR_debug
14
 
        'eglDebugMessageControlKHR',
15
 
        'eglQueryDebugKHR',
16
 
        'eglLabelObjectKHR',
17
 
    ]
18
 
 
19
 
 
20
 
def check_entrypoint_sorted(entrypoints):
21
 
    print('Checking that EGL API entrypoints are sorted...')
22
 
 
23
 
    for i, _ in enumerate(entrypoints):
24
 
        # Can't compare the first one with the previous
25
 
        if i == 0:
26
 
            continue
27
 
        if entrypoints[i - 1] > entrypoints[i]:
28
 
            print('ERROR: ' + entrypoints[i] + ' should come before ' + entrypoints[i - 1])
29
 
            exit(1)
30
 
 
31
 
    print('All good :)')
32
 
 
33
 
 
34
 
def check_glvnd_entrypoints(egl_entrypoints, glvnd_entrypoints):
35
 
    print('Checking the GLVND entrypoints against the plain EGL ones...')
36
 
    success = True
37
 
 
38
 
    for egl_entrypoint in egl_entrypoints:
39
 
        if egl_entrypoint in GLVND_EXCLUDED_ENTRYPOINTS:
40
 
            continue
41
 
        if egl_entrypoint not in glvnd_entrypoints:
42
 
            print('ERROR: ' + egl_entrypoint + ' is missing from the GLVND entrypoints (src/egl/generate/eglFunctionList.py)')
43
 
            success = False
44
 
 
45
 
    for glvnd_entrypoint in glvnd_entrypoints:
46
 
        if glvnd_entrypoint not in egl_entrypoints:
47
 
            print('ERROR: ' + glvnd_entrypoint + ' is missing from the plain EGL entrypoints (src/egl/main/eglentrypoint.h)')
48
 
            success = False
49
 
 
50
 
    for glvnd_entrypoint in GLVND_EXCLUDED_ENTRYPOINTS:
51
 
        if glvnd_entrypoint in glvnd_entrypoints:
52
 
            print('ERROR: ' + glvnd_entrypoint + ' is should *not* be in the GLVND entrypoints (src/egl/generate/eglFunctionList.py)')
53
 
            success = False
54
 
 
55
 
    if success:
56
 
        print('All good :)')
57
 
    else:
58
 
        exit(1)
59
 
 
60
 
 
61
 
def main():
62
 
    parser = argparse.ArgumentParser()
63
 
    parser.add_argument('header')
64
 
    args = parser.parse_args()
65
 
 
66
 
    with open(args.header) as header:
67
 
        lines = header.readlines()
68
 
 
69
 
    entrypoints = []
70
 
    for line in lines:
71
 
        line = line.strip()
72
 
        if line.startswith(PREFIX):
73
 
            assert line.endswith(SUFFIX)
74
 
            entrypoints.append(line[len(PREFIX):-len(SUFFIX)])
75
 
 
76
 
    check_entrypoint_sorted(entrypoints)
77
 
 
78
 
    glvnd_entrypoints = [x[0] for x in GLVND_ENTRYPOINTS]
79
 
 
80
 
    check_glvnd_entrypoints(entrypoints, glvnd_entrypoints)
81
 
 
82
 
if __name__ == '__main__':
83
 
    main()