+++ /dev/null
-#!/usr/bin/env python
-##########################################################################
-#
-# Copyright 2011 Jose Fonseca
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-##########################################################################/
-
-
-'''Apitrace test suite based on Mesa demos.'''
-
-
-
-import os.path
-import optparse
-import sys
-
-from test import Report, TestCase
-
-
-def runtest(report, demo):
- app = os.path.join(options.mesa_demos, 'src', demo)
- dirname, basename = os.path.split(app)
- name = demo.replace('/', '-')
- args = [os.path.join('.', basename)]
-
- test = TestCase(
- name = name,
- args = args,
- cwd = dirname,
- build = options.build,
- results = options.results,
- )
- test.run(report)
-
-
-
-tests = [
- 'trivial/clear-color',
- 'trivial/clear-fbo',
- 'trivial/clear-fbo-scissor',
- 'trivial/clear-fbo-tex',
- 'trivial/clear-random',
- 'trivial/clear-repeat',
- 'trivial/clear-scissor',
- 'trivial/clear-undefined',
- 'trivial/createwin',
- 'trivial/dlist-begin-call-end',
- 'trivial/dlist-dangling',
- 'trivial/dlist-degenerate',
- 'trivial/dlist-edgeflag',
- 'trivial/dlist-edgeflag-dangling',
- 'trivial/dlist-flat-tri',
- 'trivial/dlist-mat-tri',
- 'trivial/dlist-recursive-call',
- 'trivial/dlist-tri-flat-tri',
- 'trivial/dlist-tri-mat-tri',
- 'trivial/draw2arrays',
- 'trivial/drawarrays',
- 'trivial/drawelements',
- 'trivial/drawelements-large',
- 'trivial/drawrange',
- 'trivial/flat-clip',
- 'trivial/fs-tri',
- 'trivial/line',
- 'trivial/line-clip',
- 'trivial/line-cull',
- 'trivial/line-flat',
- 'trivial/line-smooth',
- 'trivial/line-stipple-wide',
- 'trivial/line-userclip',
- 'trivial/line-userclip-clip',
- 'trivial/line-userclip-nop',
- 'trivial/line-userclip-nop-clip',
- 'trivial/line-wide',
- 'trivial/line-xor',
- 'trivial/lineloop',
- 'trivial/lineloop-clip',
- 'trivial/lineloop-elts',
- 'trivial/linestrip',
- 'trivial/linestrip-clip',
- 'trivial/linestrip-flat-stipple',
- 'trivial/linestrip-stipple',
- 'trivial/linestrip-stipple-wide',
- 'trivial/long-fixed-func',
- 'trivial/pgon-mode',
- 'trivial/point',
- 'trivial/point-clip',
- 'trivial/point-param',
- 'trivial/point-sprite',
- 'trivial/point-wide',
- 'trivial/point-wide-smooth',
- 'trivial/poly',
- 'trivial/poly-flat',
- 'trivial/poly-flat-clip',
- 'trivial/poly-flat-unfilled-clip',
- 'trivial/poly-unfilled',
- 'trivial/quad',
- 'trivial/quad-clip',
- 'trivial/quad-clip-all-vertices',
- 'trivial/quad-clip-nearplane',
- 'trivial/quad-degenerate',
- 'trivial/quad-flat',
- 'trivial/quad-offset-factor',
- 'trivial/quad-offset-unfilled',
- 'trivial/quad-offset-units',
- 'trivial/quad-tex-2d',
- 'trivial/quad-tex-3d',
- 'trivial/quad-tex-alpha',
- 'trivial/quad-tex-pbo',
- 'trivial/quad-tex-sub',
- 'trivial/quad-unfilled',
- 'trivial/quad-unfilled-clip',
- 'trivial/quad-unfilled-stipple',
- 'trivial/quads',
- 'trivial/quadstrip',
- 'trivial/quadstrip-clip',
- 'trivial/quadstrip-cont',
- 'trivial/quadstrip-flat',
- 'trivial/readpixels',
- 'trivial/sub-tex',
- 'trivial/tex-quads',
- 'trivial/tri',
- 'trivial/tri-alpha',
- 'trivial/tri-alpha-tex',
- 'trivial/tri-array-interleaved',
- 'trivial/tri-blend',
- 'trivial/tri-blend-color',
- 'trivial/tri-blend-max',
- 'trivial/tri-blend-min',
- 'trivial/tri-blend-revsub',
- 'trivial/tri-blend-sub',
- 'trivial/tri-clear',
- 'trivial/tri-clip',
- 'trivial/tri-cull',
- 'trivial/tri-cull-both',
- 'trivial/tri-dlist',
- 'trivial/tri-edgeflag',
- 'trivial/tri-edgeflag-array',
- 'trivial/tri-fbo',
- 'trivial/tri-fbo-tex',
- 'trivial/tri-fbo-tex-mip',
- 'trivial/tri-flat',
- 'trivial/tri-flat-clip',
- 'trivial/tri-fog',
- 'trivial/tri-fp',
- 'trivial/tri-fp-const-imm',
- 'trivial/tri-lit',
- 'trivial/tri-lit-material',
- 'trivial/tri-logicop-none',
- 'trivial/tri-logicop-xor',
- 'trivial/tri-mask-tri',
- 'trivial/tri-multitex-vbo',
- 'trivial/tri-orig',
- 'trivial/tri-point-line-clipped',
- 'trivial/tri-query',
- 'trivial/tri-repeat',
- 'trivial/tri-scissor-tri',
- 'trivial/tri-square',
- 'trivial/tri-stencil',
- 'trivial/tri-stipple',
- 'trivial/tri-tex',
- 'trivial/tri-tex-1d',
- 'trivial/tri-tex-3d',
- 'trivial/tri-tri',
- 'trivial/tri-unfilled',
- 'trivial/tri-unfilled-clip',
- 'trivial/tri-unfilled-edgeflag',
- 'trivial/tri-unfilled-fog',
- 'trivial/tri-unfilled-point',
- 'trivial/tri-unfilled-smooth',
- 'trivial/tri-unfilled-tri',
- 'trivial/tri-unfilled-tri-lit',
- 'trivial/tri-unfilled-userclip',
- 'trivial/tri-unfilled-userclip-stip',
- 'trivial/tri-userclip',
- 'trivial/tri-viewport',
- 'trivial/tri-z',
- 'trivial/tri-z-9',
- 'trivial/tri-z-eq',
- 'trivial/trifan',
- 'trivial/trifan-flat',
- 'trivial/trifan-flat-clip',
- 'trivial/trifan-flat-unfilled-clip',
- 'trivial/trifan-unfilled',
- 'trivial/tristrip',
- 'trivial/tristrip-clip',
- 'trivial/tristrip-flat',
- 'trivial/vbo-drawarrays',
- 'trivial/vbo-drawelements',
- 'trivial/vbo-drawrange',
- 'trivial/vbo-noninterleaved',
- 'trivial/vbo-tri',
- 'trivial/vp-array',
- 'trivial/vp-array-hf',
- 'trivial/vp-array-int',
- 'trivial/vp-clip',
- 'trivial/vp-line-clip',
- 'trivial/vp-tri',
- 'trivial/vp-tri-cb',
- 'trivial/vp-tri-cb-pos',
- 'trivial/vp-tri-cb-tex',
- 'trivial/vp-tri-imm',
- 'trivial/vp-tri-invariant',
- 'trivial/vp-tri-swap',
- 'trivial/vp-tri-tex',
- 'trivial/vp-unfilled',
-
- 'demos/arbfplight',
- 'demos/arbfslight',
- 'demos/arbocclude',
- 'demos/arbocclude2',
- 'demos/bounce',
- 'demos/clearspd',
- 'demos/copypix',
- 'demos/cubemap',
- 'demos/cuberender',
- 'demos/dinoshade',
- 'demos/dissolve',
- 'demos/drawpix',
- 'demos/engine',
- 'demos/fbo_firecube',
- 'demos/fbotexture',
- 'demos/fire',
- 'demos/fogcoord',
- 'demos/fplight',
- 'demos/fslight',
- 'demos/gamma',
- 'demos/gearbox',
- 'demos/gears',
- 'demos/geartrain',
- 'demos/glinfo',
- 'demos/gloss',
- 'demos/gltestperf',
- 'demos/ipers',
- 'demos/isosurf',
- 'demos/lodbias',
- 'demos/morph3d',
- 'demos/multiarb',
- 'demos/paltex',
- 'demos/pointblast',
- 'demos/projtex',
- 'demos/rain',
- 'demos/ray',
- 'demos/readpix',
- 'demos/reflect',
- 'demos/renormal',
- 'demos/shadowtex',
- 'demos/singlebuffer',
- 'demos/spectex',
- 'demos/spriteblast',
- 'demos/stex3d',
- 'demos/teapot',
- 'demos/terrain',
- 'demos/tessdemo',
- 'demos/texcyl',
- 'demos/texenv',
- 'demos/textures',
- 'demos/trispd',
- 'demos/tunnel',
- 'demos/tunnel2',
- 'demos/vao_demo',
- 'demos/winpos',
-
- #'fp/fp-tri', # XXX: parameterized
- 'fp/point-position',
- 'fp/tri-depth',
- 'fp/tri-depth2',
- 'fp/tri-depthwrite',
- 'fp/tri-depthwrite2',
- 'fp/tri-param',
- 'fp/tri-tex',
-
- #'fpglsl/fp-tri',
-
- 'glsl/array',
- 'glsl/bezier',
- 'glsl/bitmap',
- 'glsl/brick',
- 'glsl/bump',
- 'glsl/convolutions',
- 'glsl/deriv',
- 'glsl/fragcoord',
- 'glsl/fsraytrace',
- 'glsl/geom-sprites',
- 'glsl/geom-stipple-lines',
- 'glsl/geom-wide-lines',
- 'glsl/identity',
- 'glsl/linktest',
- 'glsl/mandelbrot',
- 'glsl/multinoise',
- 'glsl/multitex',
- 'glsl/noise',
- 'glsl/noise2',
- 'glsl/pointcoord',
- 'glsl/points',
- 'glsl/samplers',
- 'glsl/shadow_sampler',
- 'glsl/shtest',
- 'glsl/skinning',
- 'glsl/texaaline',
- 'glsl/texdemo1',
- 'glsl/toyball',
- 'glsl/trirast',
- 'glsl/twoside',
- 'glsl/vert-or-frag-only',
- 'glsl/vert-tex',
- 'glsl/vsraytrace',
-
- #'gs/gs-tri',
-
- #'perf/copytex',
- #'perf/drawoverhead',
- #'perf/fbobind',
- #'perf/fill',
- #'perf/genmipmap',
- #'perf/readpixels',
- #'perf/swapbuffers',
- #'perf/teximage',
- #'perf/vbo',
- #'perf/vertexrate',
-
- 'redbook/aaindex',
- 'redbook/aapoly',
- 'redbook/aargb',
- 'redbook/accanti',
- 'redbook/accpersp',
- 'redbook/alpha',
- 'redbook/alpha3D',
- 'redbook/anti',
- 'redbook/bezcurve',
- 'redbook/bezmesh',
- 'redbook/checker',
- 'redbook/clip',
- 'redbook/colormat',
- 'redbook/combiner',
- 'redbook/convolution',
- 'redbook/cube',
- 'redbook/cubemap',
- 'redbook/depthcue',
- 'redbook/dof',
- 'redbook/double',
- 'redbook/drawf',
- 'redbook/feedback',
- 'redbook/fog',
- 'redbook/fogcoord',
- 'redbook/fogindex',
- 'redbook/font',
- 'redbook/hello',
- 'redbook/histogram',
- 'redbook/image',
- 'redbook/light',
- 'redbook/lines',
- 'redbook/list',
- 'redbook/material',
- 'redbook/minmax',
- 'redbook/mipmap',
- 'redbook/model',
- 'redbook/movelight',
- 'redbook/multisamp',
- 'redbook/multitex',
- 'redbook/mvarray',
- 'redbook/nurbs',
- 'redbook/pickdepth',
- 'redbook/picksquare',
- 'redbook/plane',
- 'redbook/planet',
- 'redbook/pointp',
- 'redbook/polyoff',
- 'redbook/polys',
- 'redbook/quadric',
- 'redbook/robot',
- 'redbook/sccolorlight',
- 'redbook/scene',
- 'redbook/scenebamb',
- 'redbook/sceneflat',
- 'redbook/select',
- 'redbook/shadowmap',
- 'redbook/smooth',
- 'redbook/stencil',
- 'redbook/stroke',
- 'redbook/surface',
- 'redbook/surfpoints',
- 'redbook/teaambient',
- 'redbook/teapots',
- 'redbook/tess',
- 'redbook/tesswind',
- 'redbook/texbind',
- 'redbook/texgen',
- 'redbook/texprox',
- 'redbook/texsub',
- 'redbook/texture3d',
- 'redbook/texturesurf',
- 'redbook/torus',
- 'redbook/trim',
- 'redbook/unproject',
- 'redbook/varray',
- 'redbook/wrap',
-
- 'samples/accum',
- 'samples/bitmap1',
- 'samples/bitmap2',
- 'samples/blendeq',
- 'samples/blendxor',
- 'samples/copy',
- 'samples/cursor',
- 'samples/depth',
- 'samples/eval',
- 'samples/fog',
- 'samples/font',
- 'samples/line',
- 'samples/logo',
- 'samples/nurb',
- 'samples/oglinfo',
- 'samples/olympic',
- 'samples/overlay',
- 'samples/point',
- 'samples/prim',
- 'samples/quad',
- 'samples/rgbtoppm',
- 'samples/select',
- 'samples/shape',
- 'samples/sphere',
- 'samples/star',
- 'samples/stencil',
- 'samples/stretch',
- 'samples/texture',
- 'samples/tri',
- 'samples/wave',
-
- #'slang/cltest',
- #'slang/sotest',
- #'slang/vstest',
-
- 'tests/afsmultiarb',
- 'tests/antialias',
- 'tests/arbfpspec',
- 'tests/arbfptest1',
- 'tests/arbfptexture',
- 'tests/arbfptrig',
- 'tests/arbgpuprog',
- 'tests/arbnpot',
- 'tests/arbnpot-mipmap',
- 'tests/arbvptest1',
- 'tests/arbvptest3',
- 'tests/arbvptorus',
- 'tests/arbvpwarpmesh',
- 'tests/arraytexture',
- 'tests/auxbuffer',
- 'tests/blendxor',
- 'tests/blitfb',
- 'tests/bufferobj',
- 'tests/bug_3050',
- 'tests/bug_3101',
- 'tests/bug_3195',
- 'tests/bug_texstore_i8',
- 'tests/bumpmap',
- 'tests/calibrate_rast',
- 'tests/condrender',
- #'tests/copypixrate', # XXX: benchmark
- 'tests/cva',
- 'tests/cva_huge',
- 'tests/cylwrap',
- 'tests/drawbuffers',
- 'tests/drawbuffers2',
- 'tests/drawstencil',
- 'tests/exactrast',
- 'tests/ext422square',
- 'tests/fbotest1',
- 'tests/fbotest2',
- 'tests/fbotest3',
- #'tests/fillrate', # XXX: benchmark
- 'tests/floattex',
- 'tests/fogcoord',
- 'tests/fptest1',
- 'tests/fptexture',
- 'tests/getteximage',
- 'tests/glutfx',
- 'tests/interleave',
- 'tests/invert',
- 'tests/jkrahntest',
- 'tests/lineclip',
- 'tests/manytex',
- 'tests/mapbufrange',
- 'tests/minmag',
- 'tests/mipgen',
- 'tests/mipmap_comp',
- 'tests/mipmap_comp_tests',
- 'tests/mipmap_limits',
- 'tests/mipmap_tunnel',
- 'tests/mipmap_view',
- 'tests/multipal',
- 'tests/multitexarray',
- 'tests/multiwindow',
- 'tests/no_s3tc',
- 'tests/occlude',
- 'tests/packedpixels',
- 'tests/pbo',
- 'tests/persp_hint',
- 'tests/prim',
- 'tests/prog_parameter',
- 'tests/quads',
- 'tests/random',
- #'tests/readrate', # XXX: benchmark
- 'tests/rubberband',
- 'tests/scissor',
- 'tests/scissor-viewport',
- 'tests/seccolor',
- 'tests/shader-interp',
- 'tests/shader_api',
- 'tests/shadow-sample',
- 'tests/sharedtex',
- 'tests/stencilreaddraw',
- 'tests/stencilwrap',
- 'tests/step',
- 'tests/streaming_rect',
- 'tests/subtex',
- #'tests/subtexrate', # XXX: benchmark
- 'tests/tex1d',
- 'tests/texcmp',
- 'tests/texcompress2',
- 'tests/texcompsub',
- 'tests/texdown',
- 'tests/texfilt',
- 'tests/texgenmix',
- 'tests/texleak',
- 'tests/texline',
- 'tests/texobj',
- 'tests/texobjshare',
- 'tests/texrect',
- 'tests/unfilledclip',
- 'tests/vparray',
- 'tests/vpeval',
- 'tests/vptest1',
- 'tests/vptest2',
- 'tests/vptest3',
- 'tests/vptorus',
- 'tests/vpwarpmesh',
- 'tests/yuvrect',
- 'tests/yuvsquare',
- 'tests/zbitmap',
- 'tests/zcomp',
- 'tests/zdrawpix',
- 'tests/zreaddraw',
-
- #'vp/vp-tris',
- #'vpglsl/vp-tris',
-
- 'xdemos/corender',
- 'xdemos/glsync',
- #'xdemos/glthreads', # XXX: multithreaded
- 'xdemos/glxcontexts',
- 'xdemos/glxdemo',
- 'xdemos/glxgears',
- 'xdemos/glxgears_fbconfig',
- 'xdemos/glxgears_pixmap',
- 'xdemos/glxheads',
- 'xdemos/glxinfo',
- 'xdemos/glxpbdemo',
- 'xdemos/glxpixmap',
- 'xdemos/glxsnoop',
- 'xdemos/glxswapcontrol',
- 'xdemos/manywin',
- 'xdemos/msctest',
- 'xdemos/multictx',
- 'xdemos/offset',
- 'xdemos/omlsync',
- 'xdemos/opencloseopen',
- 'xdemos/overlay',
- 'xdemos/pbdemo',
- 'xdemos/pbinfo',
- 'xdemos/shape',
- 'xdemos/sharedtex',
- #'xdemos/sharedtex_mt', # XXX: multithreaded
- 'xdemos/texture_from_pixmap',
- 'xdemos/wincopy',
- 'xdemos/xfont',
- 'xdemos/xrotfontdemo',
- 'xdemos/yuvrect_client',
-]
-
-
-_tests = [
- 'trivial/tri',
- 'trivial/tri-tex',
-]
-
-
-def main():
- global options
-
- # Parse command line options
- optparser = optparse.OptionParser(
- usage='\n\t%prog [options] [demo] ...',
- version='%%prog')
- optparser.add_option(
- '--build', metavar='PATH',
- type='string', dest='build', default='.',
- help='path to apitrace build [default=%default]')
- optparser.add_option(
- '--results', metavar='PATH',
- type='string', dest='results', default='results',
- help='results directory [default=%default]')
- optparser.add_option(
- '--mesa-demos', metavar='PATH',
- type='string', dest='mesa_demos', default=os.environ.get('MESA_DEMOS'),
- help='path to Mesa demos [default=%default]')
-
- (options, args) = optparser.parse_args(sys.argv[1:])
-
- if not options.mesa_demos:
- optparser.error('path to Mesa demos not specified')
-
- if args:
- testlist = []
- for arg in args:
- if arg.endswith('/'):
- for test in tests:
- if test.startswith(arg):
- testlist.append(test)
- else:
- testlist.append(arg)
- else:
- testlist = tests
-
- report = Report(options.results)
- for test in testlist:
- runtest(report, test)
-
-
-if __name__ == '__main__':
- main()