opengl.py 224 KB
Newer Older
1
# -*- coding: utf-8 -*-
Nicolai Hähnle's avatar
Nicolai Hähnle committed
2
# All tests that come with piglit, using default settings
3

4 5 6
from __future__ import (
    absolute_import, division, print_function, unicode_literals
)
7
import itertools
8
import os
9
import platform
Nicolai Hähnle's avatar
Nicolai Hähnle committed
10

Dylan Baker's avatar
Dylan Baker committed
11 12
from six.moves import range

13
from framework import grouptools
14
from framework import options
15
from framework.profile import TestProfile
16
from framework.driver_classifier import DriverClassifier
17
from framework.test.piglit_test import (
Dylan Baker's avatar
Dylan Baker committed
18
    PiglitGLTest, PiglitBaseTest, BuiltInConstantsTest
19
)
Dylan Baker's avatar
Dylan Baker committed
20 21 22
from .py_modules.constants import TESTS_DIR, GENERATED_TESTS_DIR

__all__ = ['profile']
Nicolai Hähnle's avatar
Nicolai Hähnle committed
23

24
# Disable bad hanging indent errors in pylint
25 26 27
# There is a bug in pylint which causes the profile.test_list.group_manager to
# be tagged as bad hanging indent, even though it seems to be correct (and
# similar syntax doesn't trigger an error)
28 29
# pylint: disable=bad-continuation

30 31 32 33
# Shadowing variables is a bad practice. It's just nearly impossible with the
# format of this module to avoid it.
# pylint: disable=redefined-outer-name

34

35
def add_single_param_test_set(adder, name, *params):
36
    for param in params:
37
        adder([name, param], '{}-{}'.format(name, param), run_concurrent=False)
38

Vinson Lee's avatar
Vinson Lee committed
39

40 41 42 43 44
def add_depthstencil_render_miplevels_tests(adder, test_types):
    # Note: the buffer sizes below have been chosen to exercise
    # many possible combinations of buffer alignments on i965.
    for texture_size in ['146', '273', '292', '585', '1024']:
        for test_type in test_types:
45 46
            adder(['depthstencil-render-miplevels', texture_size, test_type],
                  run_concurrent=False)
47

Vinson Lee's avatar
Vinson Lee committed
48

49
def add_fbo_stencil_tests(adder, format):
50 51 52 53 54 55 56 57 58 59
    adder(['fbo-stencil', 'clear', format],
          'fbo-stencil-{}-clear'.format(format))
    adder(['fbo-stencil', 'readpixels', format],
          'fbo-stencil-{}-readpixels'.format(format))
    adder(['fbo-stencil', 'drawpixels', format],
          'fbo-stencil-{}-drawpixels'.format(format))
    adder(['fbo-stencil', 'copypixels', format],
          'fbo-stencil-{}-copypixels'.format(format))
    adder(['fbo-stencil', 'blit', format],
          'fbo-stencil-{}-blit'.format(format))
60

Vinson Lee's avatar
Vinson Lee committed
61

62
def add_fbo_depthstencil_tests(adder, format, num_samples):
Vinson Lee's avatar
Vinson Lee committed
63 64
    assert format, \
        'add_fbo_depthstencil_tests argument "format" cannot be empty'
65

66 67
    if format == 'default_fb':
        prefix = ''
68
        concurrent = False
69 70
    else:
        prefix = 'fbo-'
71
        concurrent = True
72

73 74 75
    if int(num_samples) > 1:
        suffix = ' samples=' + num_samples
        psamples = '-samples=' + num_samples
76 77
    else:
        suffix = ''
78
        psamples = ''
79

80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
    adder(['fbo-depthstencil', 'clear', format, psamples],
          '{}depthstencil-{}-clear{}'.format(prefix, format, suffix),
          run_concurrent=concurrent)
    adder(['fbo-depthstencil', 'readpixels', format, 'FLOAT-and-USHORT',
           psamples],
          '{}depthstencil-{}-readpixels-FLOAT-and-USHORT{}'.format(
              prefix, format, suffix),
          run_concurrent=concurrent)
    adder(['fbo-depthstencil', 'readpixels', format, '24_8', psamples],
          '{}depthstencil-{}-readpixels-24_8{}'.format(prefix, format, suffix),
          run_concurrent=concurrent)
    adder(['fbo-depthstencil', 'readpixels', format, '32F_24_8_REV', psamples],
          '{}depthstencil-{}-readpixels-32F_24_8_REV{}'.format(
              prefix, format, suffix),
          run_concurrent=concurrent)
    adder(['fbo-depthstencil', 'drawpixels', format, 'FLOAT-and-USHORT',
           psamples],
          '{}depthstencil-{}-drawpixels-FLOAT-and-USHORT{}'.format(
              prefix, format, suffix),
          run_concurrent=concurrent)
    adder(['fbo-depthstencil', 'drawpixels', format, '24_8', psamples],
          '{}depthstencil-{}-drawpixels-24_8{}'.format(prefix, format, suffix),
          run_concurrent=concurrent)
    adder(['fbo-depthstencil', 'drawpixels', format, '32F_24_8_REV', psamples],
          '{}depthstencil-{}-drawpixels-32F_24_8_REV{}'.format(
              prefix, format, suffix),
          run_concurrent=concurrent)
    adder(['fbo-depthstencil', 'copypixels', format, psamples],
          '{}depthstencil-{}-copypixels{}'.format(prefix, format, suffix),
          run_concurrent=concurrent)
    adder(['fbo-depthstencil', 'blit', format, psamples],
          '{}depthstencil-{}-blit{}'.format(prefix, format, suffix),
          run_concurrent=concurrent)
Vinson Lee's avatar
Vinson Lee committed
113

114 115

def add_msaa_visual_plain_tests(adder, args, **kwargs):
116 117
    assert isinstance(args, list)

118
    adder(args, **kwargs)
119
    for sample_count in MSAA_SAMPLE_COUNTS:
120 121
        adder(args + ['-samples={}'.format(sample_count)],
              ' '.join(args + ['samples={}'.format(sample_count)]),
122 123
              **kwargs)

Vinson Lee's avatar
Vinson Lee committed
124

125 126
def add_fbo_formats_tests(adder, extension, suffix=''):
    adder(['fbo-generatemipmap-formats', extension],
127
          'fbo-generatemipmap-formats{}'.format(suffix))
128
    adder(['fbo-clear-formats', extension],
129
          'fbo-clear-formats{}'.format(suffix))
130
    adder(['get-renderbuffer-internalformat', extension],
131
          'get-renderbuffer-internalformat{}'.format(suffix))
132
    if 'depth' not in extension and 'stencil' not in extension:
133
        adder(['fbo-blending-formats', extension],
134
              'fbo-blending-formats{}'.format(suffix))
135
        adder(['fbo-alphatest-formats', extension],
136
              'fbo-alphatest-formats{}'.format(suffix))
137
        adder(['fbo-colormask-formats', extension],
138
              'fbo-colormask-formats{}'.format(suffix))
139 140 141 142
        adder(['ext_framebuffer_multisample-fast-clear',
               extension,
               'single-sample'],
              'fbo-fast-clear{}'.format(suffix))
143

Vinson Lee's avatar
Vinson Lee committed
144

145
def add_msaa_formats_tests(adder, extension):
146
    for sample_count in MSAA_SAMPLE_COUNTS:
147
        adder(['ext_framebuffer_multisample-formats', sample_count,
Vinson Lee's avatar
Vinson Lee committed
148
               extension],
149
              'multisample-formats {} {}'.format(sample_count, extension))
150 151
    adder(['ext_framebuffer_multisample-fast-clear', extension],
          'multisample-fast-clear {}'.format(extension))
152

Vinson Lee's avatar
Vinson Lee committed
153

154
def add_texwrap_target_tests(adder, target):
155 156
    adder(['texwrap', target, 'GL_RGBA8'],
          'texwrap {}'.format(target))
157 158 159
    if target == '2D':
        adder(['texwrap', target, 'GL_RGBA8', 'offset'],
              'texwrap {} offset'.format(target))
160
    adder(['texwrap', target, 'GL_RGBA8', 'bordercolor'],
161
          'texwrap {} bordercolor'.format(target))
162 163 164
    adder(['texwrap', target, 'GL_RGBA8', 'proj'],
          'texwrap {} proj'.format(target))
    adder(['texwrap', target, 'GL_RGBA8', 'proj', 'bordercolor'],
165
          'texwrap {} proj bordercolor'.format(target))
166

Vinson Lee's avatar
Vinson Lee committed
167

168
def add_texwrap_format_tests(adder, ext='', suffix=''):
169
    args = [] if ext == '' else [ext]
170
    adder(['texwrap'] + args, 'texwrap formats{}'.format(suffix))
171 172 173
    if 'compression' not in ext and 's3tc' not in ext:
        adder(['texwrap'] + args + ['offset'],
              'texwrap formats{} offset'.format(suffix))
174
    adder(['texwrap'] + args + ['bordercolor'],
175
          'texwrap formats{} bordercolor'.format(suffix))
176
    adder(['texwrap'] + args + ['bordercolor', 'swizzled'],
177
          'texwrap formats{} bordercolor-swizzled'.format(suffix))
178

Vinson Lee's avatar
Vinson Lee committed
179

180
def add_fbo_depth_tests(adder, format):
181 182
    adder(['fbo-depth-tex1d', format], 'fbo-depth-{}-tex1d'.format(format))
    adder(['fbo-depth', 'clear', format], 'fbo-depth-{}-clear'.format(format))
183
    adder(['fbo-depth', 'readpixels', format],
184
          'fbo-depth-{}-readpixels'.format(format))
185
    adder(['fbo-depth', 'drawpixels', format],
186
          'fbo-depth-{}-drawpixels'.format(format))
187
    adder(['fbo-depth', 'copypixels', format],
188 189
          'fbo-depth-{}-copypixels'.format(format))
    adder(['fbo-depth', 'blit', format], 'fbo-depth-{}-blit'.format(format))
190

Vinson Lee's avatar
Vinson Lee committed
191

192 193 194 195 196 197 198 199 200 201
def power_set(s):
    """Generate all possible subsets of the given set, including the empty set.
    """
    if len(s) == 0:
        return [[]]
    result = []
    for p in power_set(s[:-1]):
        result.append(p)
        result.append(p + [s[-1]])
    return result
202 203 204

######
# Collecting all tests
205
profile = TestProfile()  # pylint: disable=invalid-name
206

207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
# Find and add all apitrace tests.
classifier = DriverClassifier()
for basedir in [os.path.join(TESTS_DIR, 'apitrace', 'traces')]:
    for dirpath, _, filenames in os.walk(basedir):
        base_group = grouptools.from_path(os.path.join(
            'apitrace', os.path.relpath(dirpath, basedir)))

        for filename in filenames:
            if not os.path.splitext(filename)[1] == '.trace':
                continue
            group = grouptools.join(base_group, filename)

            profile.test_list[group] = PiglitBaseTest(
                [os.path.join(TESTS_DIR, 'apitrace', 'test-trace.py'),
                 os.path.join(dirpath, filename),
                 ','.join(classifier.categories)],
                run_concurrent=True)
224

225
# List of all of the MSAA sample counts we wish to test
226
MSAA_SAMPLE_COUNTS = ['2', '4', '6', '8', '16', '32']
227

228
with profile.test_list.group_manager(PiglitGLTest, 'security') as g:
229 230 231
    g(['initialized-texmemory'], run_concurrent=False)
    g(['initialized-fbo'], run_concurrent=False)
    g(['initialized-vbo'], run_concurrent=False)
232

233
with profile.test_list.group_manager(PiglitGLTest, 'shaders') as g:
234 235 236 237 238 239 240 241 242 243 244 245 246 247
    g(['activeprogram-bad-program'])
    g(['activeprogram-get'])
    g(['attribute0'])
    g(['createshaderprogram-bad-type'])
    g(['createshaderprogram-attached-shaders'])
    g(['glsl-arb-fragment-coord-conventions'])
    g(['glsl-bug-22603'])
    g(['glsl-bindattriblocation'])
    g(['glsl-dlist-getattriblocation'])
    g(['glsl-getactiveuniform-array-size'])
    g(['glsl-getactiveuniform-length'])
    g(['glsl-getattriblocation'])
    g(['getuniform-01'])
    g(['getuniform-02'])
248
    g(['getuniform-03'])
249 250 251 252 253
    g(['glsl-invalid-asm-01'])
    g(['glsl-invalid-asm-02'])
    g(['glsl-novertexdata'])
    g(['glsl-preprocessor-comments'])
    g(['glsl-reload-source'])
254
    g(['glsl-cache-fallback-shader-source'])
255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279
    g(['glsl-uniform-out-of-bounds'])
    g(['glsl-uniform-out-of-bounds-2'])
    g(['glsl-uniform-update'])
    g(['glsl-unused-varying'])
    g(['glsl-fs-bug25902'])
    g(['glsl-fs-color-matrix'])
    g(['glsl-fs-discard-02'])
    g(['glsl-fs-exp2'])
    g(['glsl-fs-flat-color'])
    g(['glsl-fs-fogcolor-statechange'])
    g(['glsl-fs-fogscale'])
    g(['glsl-fs-fragcoord'])
    g(['glsl-fs-fragcoord-zw-ortho'])
    g(['glsl-fs-fragcoord-zw-perspective'])
    g(['glsl-fs-loop'])
    g(['glsl-fs-loop-nested'])
    g(['glsl-fs-pointcoord'])
    g(['glsl-fs-raytrace-bug27060'])
    g(['glsl-fs-sampler-numbering'])
    g(['glsl-fs-shader-stencil-export'])
    g(['glsl-fs-sqrt-branch'])
    g(['glsl-fs-texturecube'])
    g(['glsl-fs-texturecube', '-bias'], 'glsl-fs-texturecube-bias')
    g(['glsl-fs-texturecube-2'])
    g(['glsl-fs-texturecube-2', '-bias'], 'glsl-fs-texturecube-2-bias')
280
    g(['glsl-fs-textureenvcolor-statechange'], run_concurrent=False)
281 282 283 284 285 286
    g(['glsl-fs-texture2drect'])
    g(['glsl-fs-texture2drect', '-proj3'], 'glsl-fs-texture2drect-proj3')
    g(['glsl-fs-texture2drect', '-proj4'], 'glsl-fs-texture2drect-proj4')
    g(['glsl-fs-user-varying-ff'])
    g(['glsl-mat-attribute'])
    g(['glsl-max-varyings'])
287
    g(['glsl-max-varyings', '--exceed-limits'],
288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321
      'glsl-max-varyings >MAX_VARYING_COMPONENTS')
    g(['glsl-orangebook-ch06-bump'])
    g(['glsl-routing'])
    g(['glsl-vs-arrays'])
    g(['glsl-vs-normalscale'])
    g(['glsl-vs-functions'])
    g(['glsl-vs-user-varying-ff'])
    g(['glsl-vs-texturematrix-1'])
    g(['glsl-vs-texturematrix-2'])
    g(['glsl-sin'])
    g(['glsl-cos'])
    g(['glsl-vs-if-bool'])
    g(['glsl-vs-loop'])
    g(['glsl-vs-loop-nested'])
    g(['glsl-vs-mov-after-deref'])
    g(['glsl-vs-mvp-statechange'])
    g(['glsl-vs-raytrace-bug26691'])
    g(['glsl-vs-statechange-1'])
    g(['vp-combined-image-units'])
    g(['glsl-derivs'])
    g(['glsl-fwidth'])
    g(['glsl-lod-bias'])
    g(['vp-ignore-input'])
    g(['glsl-empty-vs-no-fs'])
    g(['glsl-useprogram-displaylist'])
    g(['glsl-vs-point-size'])
    g(['glsl-light-model'])
    g(['glsl-link-bug30552'])
    g(['glsl-link-bug38015'])
    g(['glsl-max-vertex-attrib'])
    g(['glsl-kwin-blur-1'])
    g(['glsl-kwin-blur-2'])
    g(['gpu_shader4_attribs'])
    g(['link-unresolved-function'])
322
    g(['shadersource-no-compile'])
323 324 325 326 327 328 329 330 331 332 333 334
    g(['sso-simple'])
    g(['sso-uniforms-01'])
    g(['sso-uniforms-02'])
    g(['sso-user-varying-01'])
    g(['sso-user-varying-02'])
    g(['useprogram-flushverts-1'])
    g(['useprogram-flushverts-2'])
    g(['useprogram-inside-begin'])
    g(['useprogram-refcount-1'])
    g(['useshaderprogram-bad-type'])
    g(['useshaderprogram-bad-program'])
    g(['useshaderprogram-flushverts-1'])
335 336 337
    g(['point-vertex-id', 'gl_VertexID'])
    g(['point-vertex-id', 'gl_InstanceID'])
    g(['point-vertex-id', 'gl_VertexID', 'gl_InstanceID'])
338 339 340 341
    g(['point-vertex-id', 'divisor'])
    g(['point-vertex-id', 'gl_VertexID', 'divisor'])
    g(['point-vertex-id', 'gl_InstanceID', 'divisor'])
    g(['point-vertex-id', 'gl_VertexID', 'gl_InstanceID', 'divisor'])
342
    g(['glsl-vs-int-attrib'])
343
    g(['unsuccessful-relink'])
344
    g(['glsl-link-initializer-03'],
345
      'GLSL link two programs, global initializer')
346
    g(['glsl-getactiveuniform-count',
347 348
       os.path.join('shaders', 'glsl-getactiveuniform-length.vert'), '1'],
      'glsl-getactiveuniform-count: {}'.format('glsl-getactiveuniform-length'))
349
    g(['glsl-getactiveuniform-count',
350 351 352
       os.path.join('shaders', 'glsl-getactiveuniform-ftransform.vert'), '2'],
      'glsl-getactiveuniform-count: {}'.format(
          'glsl-getactiveuniform-ftransform'))
353
    g(['glsl-getactiveuniform-count',
354 355
       os.path.join('shaders', 'glsl-getactiveuniform-mvp.vert'), '2'],
      'glsl-getactiveuniform-count: {}'.format('glsl-getactiveuniform-mvp'))
356 357

    for subtest in ('interstage', 'intrastage', 'vs-gs'):
358
        g(['version-mixing', subtest])
359

360 361 362 363 364 365 366 367 368 369
    for subtest in ('texture2D',
                    'bias',
                    'textureGrad',
                    'texelFetch',
                    'textureLod',
                    'textureSize',
                    'textureQueryLOD',
                    'textureGather'):
        g(['zero-tex-coord', subtest])

370
with profile.test_list.group_manager(
371 372
        PiglitGLTest, 'glx',
        require_platforms=['glx', 'mixed_glx_egl']) as g:
373 374 375 376 377 378
    g(['glx-destroycontext-1'], run_concurrent=False)
    g(['glx-destroycontext-2'], run_concurrent=False)
    g(['glx-dont-care-mask'], run_concurrent=False)
    g(['glx-close-display'], run_concurrent=False)
    g(['glx-fbconfig-sanity'], run_concurrent=False)
    g(['glx-fbconfig-compliance'], run_concurrent=False)
379
    g(['glx-fbconfig-bad'], run_concurrent=False)
380
    g(['glx-fbo-binding'], run_concurrent=False)
381
    g(['glx-multi-context-front'], run_concurrent=False)
382
    g(['glx-multi-context-ib-1'], run_concurrent=False)
383
    g(['glx-multi-context-single-window'], run_concurrent=False)
384
    g(['glx-multi-window-single-context'], run_concurrent=False)
385
    g(['glx-multithread'], run_concurrent=False)
386
    g(['glx-multithread-clearbuffer'], run_concurrent=False)
387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403
    g(['glx-multithread-texture'], run_concurrent=False)
    g(['glx-multithread-makecurrent-1'], run_concurrent=False)
    g(['glx-multithread-makecurrent-2'], run_concurrent=False)
    g(['glx-multithread-makecurrent-3'], run_concurrent=False)
    g(['glx-multithread-makecurrent-4'], run_concurrent=False)
    g(['glx-multithread-shader-compile'], run_concurrent=False)
    g(['glx-shader-sharing'], run_concurrent=False)
    g(['glx-swap-exchange'], run_concurrent=False)
    g(['glx-swap-event', '--event'], 'glx-swap-event_event',
      run_concurrent=False)
    g(['glx-swap-event', '--async'], 'glx-swap-event_async',
      run_concurrent=False)
    g(['glx-swap-event', '--interval'], 'glx-swap-event_interval',
      run_concurrent=False)
    g(['glx-swap-pixmap'], run_concurrent=False)
    g(['glx-swap-pixmap-bad'], run_concurrent=False)
    g(['glx-swap-singlebuffer'], run_concurrent=False)
Dylan Baker's avatar
Dylan Baker committed
404
    g(['glx-swap-copy'], run_concurrent=False)
405 406 407 408
    g(['glx-make-current'], run_concurrent=False)
    g(['glx-make-glxdrawable-current'], run_concurrent=False)
    g(['glx-context-flush-control'], run_concurrent=False)
    g(['glx-buffer-age'], run_concurrent=False)
409 410 411
    g(['glx-pixmap-life'])
    g(['glx-pixmap13-life'])
    g(['glx-pixmap-multi'])
412 413
    g(['glx-tfp'], run_concurrent=False)
    g(['glx-visuals-depth'], run_concurrent=False)
414
    g(['glx-visuals-depth', '-pixmap'])
415
    g(['glx-visuals-stencil'], run_concurrent=False)
416
    g(['glx-visuals-stencil', '-pixmap'])
417 418
    g(['glx-window-life'])
    g(['glx-pixmap-crosscheck'])
419
    g(['glx-query-drawable', '--attr=GLX_WIDTH', '--type=GLXWINDOW'],
420
      'glx-query-drawable-GLXWINDOW-GLX_WIDTH', run_concurrent=False)
421
    g(['glx-query-drawable', '--attr=GLX_HEIGHT', '--type=GLXWINDOW'],
422
      'glx-query-drawable-GLXWINDOW-GLX_HEIGHT', run_concurrent=False)
423
    g(['glx-query-drawable', '--attr=GLX_WIDTH', '--type=GLXPIXMAP'],
424
      'glx-query-drawable-GLXPIXMAP-GLX_WIDTH', run_concurrent=False)
425
    g(['glx-query-drawable', '--attr=GLX_HEIGHT', '--type=GLXPIXMAP'],
426
      'glx-query-drawable-GLXPIXMAP-GLX_HEIGHT', run_concurrent=False)
427
    g(['glx-query-drawable', '--attr=GLX_WIDTH', '--type=GLXPBUFFER'],
428
      'glx-query-drawable-GLXPBUFFER-GLX_WIDTH', run_concurrent=False)
429
    g(['glx-query-drawable', '--attr=GLX_HEIGHT', '--type=GLXPBUFFER'],
430
      'glx-query-drawable-GLXPBUFFER-GLX_HEIGHT', run_concurrent=False)
431
    g(['glx-query-drawable', '--attr=GLX_WIDTH', '--type=WINDOW'],
432
      'glx-query-drawable-GLX_WIDTH', run_concurrent=False)
433
    g(['glx-query-drawable', '--attr=GLX_HEIGHT', '--type=WINDOW'],
434
      'glx-query-drawable-GLX_HEIGHT', run_concurrent=False)
435
    g(['glx-query-drawable', '--attr=GLX_FBCONFIG_ID', '--type=WINDOW'],
436
      'glx-query-drawable-GLX_FBCONFIG_ID-WINDOW', run_concurrent=False)
437
    g(['glx-query-drawable', '--attr=GLX_FBCONFIG_ID', '--type=GLXWINDOW'],
438
      'glx-query-drawable-GLX_FBCONFIG_ID-GLXWINDOW', run_concurrent=False)
439
    g(['glx-query-drawable', '--attr=GLX_FBCONFIG_ID', '--type=GLXPIXMAP'],
440
      'glx-query-drawable-GLX_FBCONFIG_ID-GLXPIXMAP', run_concurrent=False)
441
    g(['glx-query-drawable', '--attr=GLX_FBCONFIG_ID', '--type=GLXPBUFFER'],
442
      'glx-query-drawable-GLX_FBCONFIG_ID-GLXPBUFFER', run_concurrent=False)
443
    g(['glx-query-drawable', '--attr=GLX_FBCONFIG_ID', '--type=GLXPBUFFER'],
444
      'glx-query-drawable-GLX_PRESERVED_CONTENTS', run_concurrent=False)
445
    g(['glx-query-drawable', '--bad-drawable'],
446
      'glx-query-drawable-GLXBadDrawable', run_concurrent=False)
447
    g(['glx-string-sanity'], 'extension string sanity')
448 449
    add_msaa_visual_plain_tests(g, ['glx-copy-sub-buffer'],
                                run_concurrent=False)
450
profile.test_list[grouptools.join('glx', 'glx-buffer-age vblank_mode=0')] = \
Vinson Lee's avatar
Vinson Lee committed
451 452
    PiglitGLTest(['glx-buffer-age'],
                 require_platforms=['glx', 'mixed_glx_egl'],
453
                 run_concurrent=False)
Vinson Lee's avatar
Vinson Lee committed
454 455
profile.test_list[grouptools.join(
    'glx', 'glx-buffer-age vblank_mode=0')].env['vblank_mode'] = '0'
456

457
with profile.test_list.group_manager(
458
        PiglitGLTest,
459
        grouptools.join('glx', 'glx_ext_import_context'),
460
        require_platforms=['glx', 'mixed_glx_egl']) as g:
461 462 463 464
    g(['glx-free-context'], 'free context', run_concurrent=False)
    g(['glx-get-context-id'], 'get context ID', run_concurrent=False)
    g(['glx-get-current-display-ext'], 'get current display',
      run_concurrent=False)
465
    g(['glx-import-context-has-same-context-id'],
466 467 468 469 470 471 472 473 474 475 476 477
      'imported context has same context ID',
      run_concurrent=False)
    g(['glx-import-context-multi-process'], 'import context, multi process',
      run_concurrent=False)
    g(['glx-import-context-single-process'], 'import context, single process',
      run_concurrent=False)
    g(['glx-make-current-multi-process'], 'make current, multi process',
      run_concurrent=False)
    g(['glx-make-current-single-process'], 'make current, single process',
      run_concurrent=False)
    g(['glx-query-context-info-ext'], 'query context info',
      run_concurrent=False)
478

479
with profile.test_list.group_manager(
480
        PiglitGLTest,
481 482
        grouptools.join('glx', 'GLX_ARB_create_context'),
        require_platforms=['glx', 'mixed_glx_egl']) as g:
483
    g(['glx-create-context-current-no-framebuffer'],
484 485 486 487 488
      'current with no framebuffer')
    g(['glx-create-context-default-major-version'], 'default major version')
    g(['glx-create-context-default-minor-version'], 'default minor version')
    g(['glx-create-context-invalid-attribute'], 'invalid attribute')
    g(['glx-create-context-invalid-flag'], 'invalid flag')
489
    g(['glx-create-context-invalid-flag-forward-compatible'],
490 491 492
      'forward-compatible flag with pre-3.0')
    g(['glx-create-context-invalid-gl-version'], 'invalid OpenGL version')
    g(['glx-create-context-invalid-render-type'], 'invalid render type')
493
    g(['glx-create-context-invalid-render-type-color-index'],
494 495 496
      'color-index render type with 3.0')
    g(['glx-create-context-valid-attribute-empty'], 'empty attribute list')
    g(['glx-create-context-valid-attribute-null'], 'NULL attribute list')
497
    g(['glx-create-context-valid-flag-forward-compatible'],
498
      'forward-compatible flag with 3.0')
499

500 501 502 503 504 505
with profile.test_list.group_manager(
        PiglitGLTest,
        grouptools.join('glx', 'GLX_EXT_no_config_context'),
        require_platforms=['glx', 'mixed_glx_egl']) as g:
    g(['glx-create-context-ext-no-config-context'], 'no fbconfig')

506
with profile.test_list.group_manager(
507
        PiglitGLTest,
508 509
        grouptools.join('glx', 'GLX_ARB_create_context_profile'),
        require_platforms=['glx', 'mixed_glx_egl']) as g:
510 511 512
    g(['glx-create-context-core-profile'], '3.2 core profile required')
    g(['glx-create-context-invalid-profile'], 'invalid profile')
    g(['glx-create-context-pre-GL32-profile'], 'pre-GL3.2 profile')
513

514
with profile.test_list.group_manager(
515
        PiglitGLTest,
516 517
        grouptools.join('glx', 'GLX_ARB_create_context_robustness'),
        require_platforms=['glx', 'mixed_glx_egl']) as g:
518
    g(['glx-create-context-invalid-reset-strategy'],
519 520
      'invalid reset notification strategy')
    g(['glx-create-context-require-robustness'], 'require GL_ARB_robustness')
521

522
with profile.test_list.group_manager(
523
        PiglitGLTest,
524 525
        grouptools.join('glx', 'GLX_ARB_create_context_es2_profile'),
        require_platforms=['glx', 'mixed_glx_egl']) as g:
526
    g(['glx-create-context-indirect-es2-profile'],
527 528
      'indirect rendering ES2 profile')
    g(['glx-create-context-invalid-es-version'], 'invalid OpenGL ES version')
529

530
with profile.test_list.group_manager(
531
        PiglitGLTest,
532 533
        grouptools.join('glx', 'GLX_ARB_sync_control'),
        require_platforms=['glx', 'mixed_glx_egl']) as g:
534
    g(['glx-oml-sync-control-getmscrate'], 'glXGetMscRateOML')
535
    g(['glx-oml-sync-control-swapbuffersmsc-divisor-zero'],
536 537
      'swapbuffersmsc-divisor-zero')
    g(['glx-oml-sync-control-swapbuffersmsc-return'], 'swapbuffersmsc-return')
538
    g(['glx-oml-sync-control-swapbuffersmsc-return', '0'],
539
      'swapbuffersmsc-return swap_interval 0')
540
    g(['glx-oml-sync-control-swapbuffersmsc-return', '1'],
541 542
      'swapbuffersmsc-return swap_interval 1')
    g(['glx-oml-sync-control-waitformsc'], 'waitformsc')
543

544 545 546 547 548 549
oml_sync_control_nonzeros = [
    mode + [kind, period]
    for mode in [[], ['-fullscreen'], ['-waitformsc']]
    for kind in ['-divisor', '-msc-delta']
    for period in ['1', '2']
]
550
for args in oml_sync_control_nonzeros:
Vinson Lee's avatar
Vinson Lee committed
551
    group = grouptools.join('glx', 'GLX_ARB_sync_control',
552 553 554
                            ' '.join(['timing'] + args))
    profile.test_list[group] = PiglitGLTest(
        ['glx-oml-sync-control-timing'] + args,
555
        require_platforms=['glx', 'mixed_glx_egl'], run_concurrent=False)
556

557
with profile.test_list.group_manager(
558
        PiglitGLTest,
559 560
        grouptools.join('glx', 'GLX_MESA_query_renderer'),
        require_platforms=['glx', 'mixed_glx_egl']) as g:
561
    g(['glx-query-renderer-coverage'], 'coverage')
562

563 564 565 566
with profile.test_list.group_manager(
        PiglitGLTest, 'wgl',
        require_platforms=['wgl']) as g:
    g(['wgl-sanity'])
567 568
    g(['wgl-multi-context-single-window'])
    g(['wgl-multi-window-single-context'])
569

570 571 572 573
with profile.test_list.group_manager(
        PiglitGLTest,
        grouptools.join('spec', '!opengl 1.0')) as g:
    g(['gl-1.0-beginend-coverage'])
574
    g(['gl-1.0-bitmap-heart-dance'])
575 576
    g(['gl-1.0-dlist-beginend'])
    g(['gl-1.0-dlist-bitmap'])
577
    g(['gl-1.0-dlist-materials'])
578 579
    g(['gl-1.0-dlist-shademodel'])
    g(['gl-1.0-drawpixels-color-index'])
580
    g(['gl-1.0-drawpixels-depth-test'])
581
    g(['gl-1.0-drawpixels-stencil-test'])
582
    g(['gl-1.0-drawbuffer-modes'], run_concurrent=False)
583 584 585
    g(['gl-1.0-edgeflag'])
    g(['gl-1.0-edgeflag-const'])
    g(['gl-1.0-edgeflag-quads'])
586
    g(['gl-1.0-empty-begin-end-clause'])
587
    g(['gl-1.0-long-dlist'])
588
    g(['gl-1.0-long-line-loop'])
589 590 591 592 593 594 595 596 597 598
    g(['gl-1.0-readpixels-oob'])
    g(['gl-1.0-rendermode-feedback'])
    g(['gl-1.0-front-invalidate-back'], run_concurrent=False)
    g(['gl-1.0-swapbuffers-behavior'], run_concurrent=False)
    g(['gl-1.0-polygon-line-aa'])
    g(['gl-1.0-push-no-attribs'])
    g(['gl-1.0-blend-func'])
    g(['gl-1.0-fpexceptions'])
    g(['gl-1.0-ortho-pos'])
    g(['gl-1.0-rastercolor'])
599
    g(['gl-1.0-read-cache-stress-test'])
600 601 602 603 604 605 606 607 608 609 610 611 612 613
    g(['gl-1.0-readpixsanity'])
    g(['gl-1.0-logicop'])
    g(['gl-1.0-no-op-paths'])
    g(['gl-1.0-simple-readbuffer'])
    g(['gl-1.0-spot-light'])
    g(['gl-1.0-scissor-bitmap'])
    g(['gl-1.0-scissor-clear'])
    g(['gl-1.0-scissor-copypixels'])
    g(['gl-1.0-scissor-depth-clear'])
    g(['gl-1.0-scissor-depth-clear-negative-xy'])
    g(['gl-1.0-scissor-many'])
    g(['gl-1.0-scissor-offscreen'])
    g(['gl-1.0-scissor-polygon'])
    g(['gl-1.0-scissor-stencil-clear'])
614
    g(['gl-1.0-texgen'])
615
    g(['gl-1.0-textured-triangle'])
616
    g(['gl-1.0-user-clip-all-planes'])
617

618
with profile.test_list.group_manager(
619
        PiglitGLTest,
Brian Paul's avatar
Brian Paul committed
620
        grouptools.join('spec', '!opengl 1.1')) as g:
621 622 623 624 625 626
    # putting slower tests first
    g(['streaming-texture-leak'])
    g(['max-texture-size'])
    g(['max-texture-size-level'])
    g(['copyteximage', '1D'])
    g(['copyteximage', '2D'])
627
    g(['gl-1.1-color-material-array'])
628
    g(['gl-1.1-draw-arrays-start'])
629
    g(['gl-1.1-read-pixels-after-display-list'])
630
    g(['gl-1.1-set-vertex-color-after-draw'])
631 632
    g(['array-stride'])
    g(['clear-accum'])
633
    g(['clipflat'])
634 635 636 637 638 639 640 641 642 643 644 645
    g(['copypixels-draw-sync'])
    g(['copypixels-sync'])
    g(['degenerate-prims'])
    g(['depthfunc'])
    g(['depthrange-clear'])
    g(['dlist-clear'])
    g(['dlist-color-material'])
    g(['dlist-fdo3129-01'])
    g(['dlist-fdo3129-02'])
    g(['dlist-fdo31590'])
    g(['draw-arrays-colormaterial'])
    g(['draw-copypixels-sync'])
646 647
    g(['draw-pixel-with-texture'])
    g(['drawpix-z'])
648
    g(['draw-sync'])
649 650 651 652
    g(['fog-modes'])
    g(['fragment-center'])
    g(['geterror-invalid-enum'])
    g(['geterror-inside-begin'])
653
    g(['glinfo'])
654
    g(['gl-1.1-xor'])
655
    g(['gl-1.1-xor-copypixels'])
656
    g(['gl-1.2-texture-base-level'])
657
    g(['gl-1.3-alpha_to_coverage_nop'])
658 659 660
    g(['hiz'])
    g(['infinite-spot-light'])
    g(['line-aa-width'])
661
    g(['line-flat-clip-color'])
662 663
    g(['lineloop'])
    g(['lineloop', '-dlist'], 'lineloop-dlist')
664
    g(['linestipple'], run_concurrent=False)
665
    g(['longprim'])
666
    g(['masked-clear'])
667 668
    g(['point-line-no-cull'])
    g(['polygon-mode'])
669
    g(['polygon-mode-facing'])
670
    g(['polygon-mode-offset'])
671
    g(['polygon-offset'])
672
    g(['ppgtt_memory_alignment'])
673 674 675
    g(['push-pop-texture-state'])
    g(['quad-invariance'])
    g(['readpix-z'])
676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695
    g(['roundmode-getintegerv'])
    g(['roundmode-pixelstore'])
    g(['select', 'gl11'], 'GL_SELECT - no test function')
    g(['select', 'depth'], 'GL_SELECT - depth-test enabled')
    g(['select', 'stencil'], 'GL_SELECT - stencil-test enabled')
    g(['select', 'alpha'], 'GL_SELECT - alpha-test enabled')
    g(['select', 'scissor'], 'GL_SELECT - scissor-test enabled')
    g(['stencil-drawpixels'])
    g(['texgen'])
    g(['two-sided-lighting'])
    g(['user-clip'])
    g(['varray-disabled'])
    g(['windowoverlap'])
    g(['copyteximage-border'])
    g(['copyteximage-clipping'])
    g(['copytexsubimage'])
    g(['getteximage-formats'])
    g(['getteximage-luminance'])
    g(['getteximage-simple'])
    g(['getteximage-depth'])
Vinson Lee's avatar
Vinson Lee committed
696
    g(['incomplete-texture', 'fixed'], 'incomplete-texture-fixed')
697 698
    g(['proxy-texture'])
    g(['sized-texture-format-channels'])
699
    g(['texredefine'])
700
    g(['texsubimage'])
701
    g(['texsubimage-unpack'])
702 703
    g(['texsubimage-depth-formats'])
    g(['texture-al'])
704 705 706 707
    g(['triangle-guardband-viewport'])
    g(['getteximage-targets', '1D'])
    g(['getteximage-targets', '2D'])
    g(['teximage-scale-bias'])
708
    add_msaa_visual_plain_tests(g, ['draw-pixels'])
709 710 711
    add_msaa_visual_plain_tests(g, ['read-front'], run_concurrent=False)
    add_msaa_visual_plain_tests(g, ['read-front', 'clear-front-first'],
                                run_concurrent=False)
712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742
    add_texwrap_target_tests(g, '1D')
    add_texwrap_target_tests(g, '2D')
    add_texwrap_format_tests(g)

    color_formats = [
        'GL_RED', 'GL_R8', 'GL_R8_SNORM', 'GL_R16', 'GL_R16_SNORM',
        'GL_R16F', 'GL_R32F',

        'GL_RG', 'GL_RG8', 'GL_RG8_SNORM', 'GL_RG16', 'GL_RG16_SNORM',
        'GL_RG16F', 'GL_RG32F',

        'GL_RGB', 'GL_R3_G3_B2', 'GL_RGB4', 'GL_RGB5', 'GL_RGB8',
        'GL_RGB8_SNORM', 'GL_SRGB8', 'GL_RGB10', 'GL_R11F_G11F_B10F',
        'GL_RGB12', 'GL_RGB9_E5', 'GL_RGB16', 'GL_RGB16F',
        'GL_RGB16_SNORM', 'GL_RGB32F',

        'GL_RGBA', 'GL_RGBA2', 'GL_RGBA4', 'GL_RGB5_A1', 'GL_RGBA8',
        'GL_RGB10_A2', 'GL_RGBA8_SNORM', 'GL_SRGB8_ALPHA8', 'GL_RGBA12',
        'GL_RGBA16', 'GL_RGBA16_SNORM', 'GL_RGBA32F',

        'GL_ALPHA', 'GL_ALPHA4', 'GL_ALPHA8', 'GL_ALPHA12', 'GL_ALPHA16',

        'GL_LUMINANCE', 'GL_LUMINANCE4', 'GL_LUMINANCE8', 'GL_SLUMINANCE8',
        'GL_LUMINANCE12', 'GL_LUMINANCE16',

        'GL_LUMINANCE_ALPHA', 'GL_LUMINANCE4_ALPHA4',
        'GL_LUMINANCE6_ALPHA2', 'GL_LUMINANCE8_ALPHA8',
        'GL_SLUMINANCE8_ALPHA8', 'GL_LUMINANCE12_ALPHA4',
        'GL_LUMINANCE12_ALPHA12', 'GL_LUMINANCE16_ALPHA16',
    ]
    for format in color_formats:
743
        g(['teximage-colors', format])
744

745
    for num_samples in ['0'] + MSAA_SAMPLE_COUNTS:
746
        add_fbo_depthstencil_tests(g, 'default_fb', num_samples)
747

748
with profile.test_list.group_manager(
749 750
        PiglitGLTest,
        grouptools.join('spec', '!opengl 1.2')) as g:
751
    g(['gl-1.2-texparameter-before-teximage'])
752 753 754 755 756 757 758
    g(['draw-elements-vs-inputs'])
    g(['two-sided-lighting-separate-specular'])
    g(['levelclamp'])
    g(['lodclamp'])
    g(['lodclamp-between'])
    g(['lodclamp-between-max'])
    g(['mipmap-setup'])
759
    g(['gl-1.2-rescale-normal'])
760 761
    g(['tex-skipped-unit'])
    g(['tex3d'])
762
    g(['tex3d-maxsize'], run_concurrent=False)
763 764
    g(['teximage-errors'])
    g(['texture-packed-formats'])
765
    g(['getteximage-targets', '3D'])
766
    add_msaa_visual_plain_tests(g, ['copyteximage', '3D'])
767 768
    add_texwrap_target_tests(g, '3D')

769
with profile.test_list.group_manager(
770 771
        PiglitGLTest,
        grouptools.join('spec', '!opengl 1.3')) as g:
772 773
    g(['texunits'])
    g(['tex-border-1'])
774
    g(['gl-1.3-texture-env'])
775
    g(['tex3d-depth1'])
776

777
with profile.test_list.group_manager(
778 779
        PiglitGLTest,
        grouptools.join('spec', '!opengl 1.4')) as g:
780
    g(['gl-1.4-rgba-mipmap-texture-with-rgb-visual'])
781 782
    g(['blendminmax'])
    g(['blendsquare'])
783
    g(['gl-1.4-dlist-multidrawarrays'])
784
    g(['gl-1.4-multidrawarrays-errors'])
785
    g(['gl-1.4-polygon-offset'])
786
    g(['gl-1.4-tex1d-2dborder'])
787 788 789 790 791
    g(['draw-batch'])
    g(['stencil-wrap'])
    g(['triangle-rasterization'])
    g(['triangle-rasterization', '-use_fbo'], 'triangle-rasterization-fbo')
    g(['triangle-rasterization-overdraw'])
Vinson Lee's avatar
Vinson Lee committed
792 793
    g(['tex-miplevel-selection', '-nobias', '-nolod'],
      'tex-miplevel-selection')
794 795
    g(['tex-miplevel-selection', '-nobias'], 'tex-miplevel-selection-lod')
    g(['tex-miplevel-selection'], 'tex-miplevel-selection-lod-bias')
796
    add_msaa_visual_plain_tests(g, ['copy-pixels'])
797

798
with profile.test_list.group_manager(
799 800
        PiglitGLTest,
        grouptools.join('spec', '!opengl 1.5')) as g:
801 802 803 804 805 806
    g(['draw-elements'])
    g(['draw-elements', 'user'], 'draw-elements-user')
    g(['draw-vertices'])
    g(['draw-vertices', 'user'], 'draw-vertices-user')
    g(['isbufferobj'])
    g(['depth-tex-compare'])
807
    g(['gl-1.5-get-array-attribs'])
808
    g(['gl-1.5-normal3b3s-invariance', 'GL_BYTE'],
809
      'normal3b3s-invariance-byte')
810
    g(['gl-1.5-normal3b3s-invariance', 'GL_SHORT'],
811
      'normal3b3s-invariance-short')
812
    g(['gl-1.5-vertex-buffer-offsets'], 'vertex-buffer-offsets')
813

814
with profile.test_list.group_manager(
815 816
        PiglitGLTest,
        grouptools.join('spec', '!opengl 2.0')) as g:
817 818 819
    g(['attribs'])
    g(['gl-2.0-edgeflag'])
    g(['gl-2.0-edgeflag-immediate'])
820
    g(['gl-2.0-large-point-fs'])
821
    g(['gl-2.0-link-empty-prog'])
822
    g(['gl-2.0-two-sided-stencil'])
823
    g(['gl-2.0-vertexattribpointer'])
824
    g(['gl-2.0-vertexattribpointer-size-3'])
825
    g(['gl-2.0-vertex-attr-0'])
826
    g(['gl-2.0-vertex-const-attr'])
827
    g(['gl-2.0-reuse_fragment_shader'])
828
    g(['gl-2.0-shader-materials'])
829 830 831
    g(['attrib-assignments'])
    g(['getattriblocation-conventional'])
    g(['clip-flag-behavior'])
832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864
    g(['vertex-program-two-side', 'enabled', 'front', 'back', 'front2',
        'back2'])
    g(['vertex-program-two-side', 'enabled', 'front', 'back', 'front2'])
    g(['vertex-program-two-side', 'enabled', 'front', 'back', 'back2'])
    g(['vertex-program-two-side', 'enabled', 'front', 'back'])
    g(['vertex-program-two-side', 'enabled', 'front', 'front2', 'back2'])
    g(['vertex-program-two-side', 'enabled', 'front', 'front2'])
    g(['vertex-program-two-side', 'enabled', 'front', 'back2'])
    g(['vertex-program-two-side', 'enabled', 'front'])
    g(['vertex-program-two-side', 'enabled', 'back', 'front2', 'back2'])
    g(['vertex-program-two-side', 'enabled', 'back', 'front2'])
    g(['vertex-program-two-side', 'enabled', 'back', 'back2'])
    g(['vertex-program-two-side', 'enabled', 'back'])
    g(['vertex-program-two-side', 'enabled', 'front2', 'back2'])
    g(['vertex-program-two-side', 'enabled', 'front2'])
    g(['vertex-program-two-side', 'enabled', 'back2'])
    g(['vertex-program-two-side', 'enabled'])
    g(['vertex-program-two-side', 'front', 'back', 'front2', 'back2'])
    g(['vertex-program-two-side', 'front', 'back', 'front2'])
    g(['vertex-program-two-side', 'front', 'back', 'back2'])
    g(['vertex-program-two-side', 'front', 'back'])
    g(['vertex-program-two-side', 'front', 'front2', 'back2'])
    g(['vertex-program-two-side', 'front', 'front2'])
    g(['vertex-program-two-side', 'front', 'back2'])
    g(['vertex-program-two-side', 'front'])
    g(['vertex-program-two-side', 'back', 'front2', 'back2'])
    g(['vertex-program-two-side', 'back', 'front2'])
    g(['vertex-program-two-side', 'back', 'back2'])
    g(['vertex-program-two-side', 'back'])
    g(['vertex-program-two-side', 'front2', 'back2'])
    g(['vertex-program-two-side', 'front2'])
    g(['vertex-program-two-side', 'back2'])
    g(['vertex-program-two-side'])
865 866 867 868 869 870 871
    g(['clear-varray-2.0'])
    g(['early-z'])
    g(['occlusion-query-discard'])
    g(['stencil-twoside'])
    g(['vs-point_size-zero'])
    g(['depth-tex-modes-glsl'])
    g(['fragment-and-vertex-texturing'])
872
    g(['incomplete-texture', 'glsl'], 'incomplete-texture-glsl')
873
    g(['tex3d-npot'])
874 875 876
    g(['max-samplers'])
    g(['max-samplers', 'border'])
    g(['gl-2.0-active-sampler-conflict'])
877 878
    g(['incomplete-cubemap', 'size'], 'incomplete-cubemap-size')
    g(['incomplete-cubemap', 'format'], 'incomplete-cubemap-format')
879
    g(['gl-2.0-texture-units'])
880
    g(['gl-2.0-uniform-neg-location'])
881

882
with profile.test_list.group_manager(
883 884
        PiglitGLTest,
        grouptools.join('spec', '!opengl 2.1')) as g:
885 886
    g(['gl-2.1-minmax'], 'minmax')
    g(['gl-2.1-pbo'], 'pbo')
887
    g(['gl-2.1-polygon-stipple-fs'], 'polygon-stipple-fs')
888
    g(['gl-2.1-fbo-mrt-alphatest-no-buffer-zero-write'], 'fbo-mrt-alphatest-no-buffer-zero-write')
889

890
with profile.test_list.group_manager(
891 892
        PiglitGLTest,
        grouptools.join('spec', '!opengl 3.0')) as g:
893 894 895 896
    g(['attribs', 'GL3'], 'attribs')
    g(['bindfragdata-invalid-parameters'])
    g(['bindfragdata-link-error'])
    g(['bindfragdata-nonexistent-variable'])
897
    g(['gl-3.0-bound-resource-limits'],
Vinson Lee's avatar
Vinson Lee committed
898
      'bound-resource-limits')
899 900
    g(['clearbuffer-depth'])
    g(['clearbuffer-depth-stencil'])
901
    g(['clearbuffer-display-lists'])
902 903 904 905
    g(['clearbuffer-invalid-drawbuffer'])
    g(['clearbuffer-invalid-buffer'])
    g(['clearbuffer-mixed-format'])
    g(['clearbuffer-stencil'])