11b5d61b8Smrgsimple_xinit = executable(
21b5d61b8Smrg    'simple-xinit',
31b5d61b8Smrg    'simple-xinit.c',
41b5d61b8Smrg    include_directories: inc,
51b5d61b8Smrg)
61b5d61b8Smrg
71b5d61b8Smrgpiglit_env = environment()
81b5d61b8Smrgpiglit_env.set('XSERVER_DIR', meson.source_root())
91b5d61b8Smrgpiglit_env.set('XSERVER_BUILDDIR', meson.build_root())
101b5d61b8Smrg
11ed6184dfSmrgsome_ops = ' -o clear,src,dst,over,xor,disjointover'
12ed6184dfSmrgrendercheck_tests = [
13ed6184dfSmrg    ['blend/All/a8r8g8b8', '-t blend -f a8r8g8b8'],
14ed6184dfSmrg    ['blend/All/x8r8g8b8', '-t blend -f a8r8g8b8,x8r8g8b8'],
15ed6184dfSmrg    ['blend/All/a2r10g10b10', '-t blend -f a8r8g8b8,a2r10g10b10'],
16ed6184dfSmrg    ['blend/Clear', '-t blend -o clear'],
17ed6184dfSmrg    ['blend/Src', '-t blend -o src'],
18ed6184dfSmrg    ['blend/Over', '-t blend -o over'],
19ed6184dfSmrg    ['composite/Some/a8r8g8b8', '-t composite -f a8r8g8b8' + some_ops],
20ed6184dfSmrg    ['composite/Some/x8r8g8b8', '-t composite -f a8r8g8b8,x8r8g8b8' + some_ops],
21ed6184dfSmrg    ['composite/Some/a2r10g10b10', '-t composite -f a8r8g8b8,a2r10g10b10' + some_ops],
22ed6184dfSmrg    ['ca composite/Some/a8r8g8b8', '-t cacomposite -f a8r8g8b8' + some_ops],
23ed6184dfSmrg    ['ca composite/Some/a8', '-t cacomposite -f a8r8g8b8,a8' + some_ops],
24ed6184dfSmrg    ['ca composite/Some/x8r8g8b8', '-t cacomposite -f a8r8g8b8,x8r8g8b8' + some_ops],
25ed6184dfSmrg    ['ca composite/Some/a2r10g10b10', '-t cacomposite -f a8r8g8b8,a2r10g10b10' + some_ops],
26ed6184dfSmrg    ['fill', '-t fill'],
27ed6184dfSmrg    ['bug7366', '-t bug7366'],
28ed6184dfSmrg    ['destination coordinates', '-t dcoords'],
29ed6184dfSmrg    ['source coordinates', '-t scoords'],
30ed6184dfSmrg    ['mask coordinates', '-t mcoords'],
31ed6184dfSmrg    ['translated source coordinates', '-t tscoords'],
32ed6184dfSmrg    ['translated mask coordinates', '-t tmcoords'],
33ed6184dfSmrg    ['triangles', '-t triangles'],
34ed6184dfSmrg    ['LibreOffice xRGB', '-t libreoffice_xrgb'],
35ed6184dfSmrg    ['GTK ARGB vs xBGR', '-t gtk_argb_xbgr'],
36ed6184dfSmrg]
37ed6184dfSmrg
38ed6184dfSmrgrendercheck = find_program('rendercheck', required:false)
39ed6184dfSmrg
401b5d61b8Smrgif get_option('xvfb')
41ed6184dfSmrg    xvfb_args = [
42ed6184dfSmrg        xvfb_server.full_path(),
43ed6184dfSmrg        '-screen',
44ed6184dfSmrg        'scrn',
45ed6184dfSmrg        '1280x1024x24',
46ed6184dfSmrg    ]
47ed6184dfSmrg
48ed6184dfSmrg    test('XTS',
49ed6184dfSmrg        find_program('scripts/xvfb-piglit.sh'),
501b5d61b8Smrg        env: piglit_env,
511b5d61b8Smrg        timeout: 1200,
52ed6184dfSmrg        suite: 'xvfb'
531b5d61b8Smrg    )
541b5d61b8Smrg
55ed6184dfSmrg    if rendercheck.found()
56ed6184dfSmrg        foreach rctest: rendercheck_tests
57ed6184dfSmrg            test(rctest[0],
58ed6184dfSmrg                 simple_xinit,
59ed6184dfSmrg                 # Use full_path so people can copy and paste the
60ed6184dfSmrg                 # command line from testlog.txt easily.
61ed6184dfSmrg                 args: [
62ed6184dfSmrg                     rendercheck.path(),
63ed6184dfSmrg                     rctest[1].split(' '),
64ed6184dfSmrg                     '--',
65ed6184dfSmrg                     xvfb_args,
66ed6184dfSmrg                 ],
67ed6184dfSmrg                 suite: 'xvfb'
68ed6184dfSmrg                )
69ed6184dfSmrg        endforeach
70ed6184dfSmrg    endif
71ed6184dfSmrg
721b5d61b8Smrg    if get_option('xephyr') and build_glamor
73ed6184dfSmrg        test('XTS',
741b5d61b8Smrg            find_program('scripts/xephyr-glamor-piglit.sh'),
751b5d61b8Smrg            env: piglit_env,
761b5d61b8Smrg            timeout: 1200,
77ed6184dfSmrg            suite: 'xephr-glamor',
781b5d61b8Smrg        )
79ed6184dfSmrg
80ed6184dfSmrg        if rendercheck.found()
81ed6184dfSmrg            foreach rctest: rendercheck_tests
82ed6184dfSmrg                test(rctest[0],
83ed6184dfSmrg                     simple_xinit,
84ed6184dfSmrg                     args: [simple_xinit.full_path(),
85ed6184dfSmrg                            rendercheck.path(),
86ed6184dfSmrg                            rctest[1].split(' '),
87ed6184dfSmrg                            '----',
88ed6184dfSmrg                            xephyr_server.full_path(),
89ed6184dfSmrg                            '-glamor',
90ed6184dfSmrg                            '-glamor-skip-present',
91ed6184dfSmrg                            '-schedMax', '2000',
92ed6184dfSmrg                            '--',
93ed6184dfSmrg                            xvfb_args,
94ed6184dfSmrg                           ],
95ed6184dfSmrg                     suite: 'xephr-glamor',
96ed6184dfSmrg                     timeout: 300,
97ed6184dfSmrg                    )
98ed6184dfSmrg            endforeach
99ed6184dfSmrg        endif
1001b5d61b8Smrg    endif
1011b5d61b8Smrgendif
1021b5d61b8Smrg
1031b5d61b8Smrgsubdir('bigreq')
104ed6184dfSmrgsubdir('damage')
1051b5d61b8Smrgsubdir('sync')
106ed6184dfSmrg
107ed6184dfSmrgif build_xorg
108ed6184dfSmrg# Tests that require at least some DDX functions in order to fully link
109ed6184dfSmrg# For now, requires xf86 ddx, could be adjusted to use another
110ed6184dfSmrg    unit_sources = [
111ed6184dfSmrg     '../mi/miinitext.c',
112ed6184dfSmrg     '../mi/miinitext.h',
113dc61d50dSmrg     '../mi/micmap.c',
114dc61d50dSmrg     '../mi/micmap.h',
115ed6184dfSmrg     'fixes.c',
116ed6184dfSmrg     'input.c',
117ed6184dfSmrg     'list.c',
118ed6184dfSmrg     'misc.c',
119ed6184dfSmrg     'signal-logging.c',
120ed6184dfSmrg     'string.c',
121ed6184dfSmrg     'test_xkb.c',
122ed6184dfSmrg     'tests-common.c',
123ed6184dfSmrg     'tests.c',
124ed6184dfSmrg     'touch.c',
125ed6184dfSmrg     'xfree86.c',
126ed6184dfSmrg     'xtest.c',
127ed6184dfSmrg    ]
128ed6184dfSmrg    unit_defines = ['-DXORG_TESTS']
129ed6184dfSmrg    unit_includes = [inc, xorg_inc]
130ed6184dfSmrg
131ed6184dfSmrg    if build_res
132ed6184dfSmrg        unit_sources += ['hashtabletest.c']
133ed6184dfSmrg        unit_defines += ['-DRES_TESTS']
134ed6184dfSmrg    endif
135ed6184dfSmrg
136ed6184dfSmrg    unit_c_args = unit_defines
137ed6184dfSmrg    if meson.get_compiler('c').has_link_argument('-Wl,-wrap')
138ed6184dfSmrg       # LTO breaks with -Wl,-wrap on certain configurations
139ed6184dfSmrg       unit_c_args += ['-fno-lto']
140ed6184dfSmrg       unit_sources += [
141ed6184dfSmrg        'xi1/protocol-xchangedevicecontrol.c',
142ed6184dfSmrg        'xi2/protocol-common.c',
143ed6184dfSmrg        'xi2/protocol-xiqueryversion.c',
144ed6184dfSmrg        'xi2/protocol-xiquerydevice.c',
145ed6184dfSmrg        'xi2/protocol-xiselectevents.c',
146ed6184dfSmrg        'xi2/protocol-xigetselectedevents.c',
147ed6184dfSmrg        'xi2/protocol-xisetclientpointer.c',
148ed6184dfSmrg        'xi2/protocol-xigetclientpointer.c',
149ed6184dfSmrg        'xi2/protocol-xiquerypointer.c',
150ed6184dfSmrg        'xi2/protocol-xipassivegrabdevice.c',
151ed6184dfSmrg        'xi2/protocol-xiwarppointer.c',
152ed6184dfSmrg        'xi2/protocol-eventconvert.c',
153ed6184dfSmrg        'xi2/xi2.c',
154ed6184dfSmrg       ]
155ed6184dfSmrg       unit_defines += ['-DLDWRAP_TESTS']
156ed6184dfSmrg       unit_includes += [include_directories('xi1', 'xi2')]
157ed6184dfSmrg       ldwraps = [
158ed6184dfSmrg        '-Wl,-wrap,dixLookupWindow',
159ed6184dfSmrg        '-Wl,-wrap,dixLookupClient',
160ed6184dfSmrg        '-Wl,-wrap,WriteToClient',
161ed6184dfSmrg        '-Wl,-wrap,dixLookupWindow',
162ed6184dfSmrg        '-Wl,-wrap,XISetEventMask',
163ed6184dfSmrg        '-Wl,-wrap,AddResource',
164ed6184dfSmrg        '-Wl,-wrap,GrabButton',
165ed6184dfSmrg       ]
166ed6184dfSmrg    else
167ed6184dfSmrg       ldwraps = []
168ed6184dfSmrg       message('ld -wrap required for xi1 & xi2 unit tests, skipping')
169ed6184dfSmrg    endif
170ed6184dfSmrg
171ed6184dfSmrg    unit = executable('tests',
172ed6184dfSmrg         unit_sources,
173ed6184dfSmrg         c_args: unit_c_args,
174ed6184dfSmrg         dependencies: [pixman_dep, randrproto_dep, inputproto_dep, libxcvt_dep],
175ed6184dfSmrg         include_directories: unit_includes,
176ed6184dfSmrg         link_args: ldwraps,
177ed6184dfSmrg         link_with: xorg_link,
178ed6184dfSmrg    )
179ed6184dfSmrg
180ed6184dfSmrg    test('unit', unit)
181ed6184dfSmrgendif
182