]> git.cworth.org Git - apitrace-tests/commitdiff
Generalize the tests for other example suites.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Thu, 9 Jun 2011 19:46:48 +0000 (20:46 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Thu, 9 Jun 2011 19:46:48 +0000 (20:46 +0100)
mesa-demos.spec [new file with mode: 0644]
mesademos.py [deleted file]
ogl-samples.spec [new file with mode: 0644]
test.py
testsuite.py [new file with mode: 0755]

diff --git a/mesa-demos.spec b/mesa-demos.spec
new file mode 100644 (file)
index 0000000..7e1b245
--- /dev/null
@@ -0,0 +1,540 @@
+trivial-clear-color    src/trivial     clear-color
+trivial-clear-fbo      src/trivial     clear-fbo
+trivial-clear-fbo-scissor      src/trivial     clear-fbo-scissor
+trivial-clear-fbo-tex  src/trivial     clear-fbo-tex
+trivial-clear-random   src/trivial     clear-random
+trivial-clear-repeat   src/trivial     clear-repeat
+trivial-clear-scissor  src/trivial     clear-scissor
+trivial-clear-undefined        src/trivial     clear-undefined
+trivial-createwin      src/trivial     createwin
+trivial-dlist-begin-call-end   src/trivial     dlist-begin-call-end
+trivial-dlist-dangling src/trivial     dlist-dangling
+trivial-dlist-degenerate       src/trivial     dlist-degenerate
+trivial-dlist-edgeflag src/trivial     dlist-edgeflag
+trivial-dlist-edgeflag-dangling        src/trivial     dlist-edgeflag-dangling
+trivial-dlist-flat-tri src/trivial     dlist-flat-tri
+trivial-dlist-mat-tri  src/trivial     dlist-mat-tri
+trivial-dlist-recursive-call   src/trivial     dlist-recursive-call
+trivial-dlist-tri-flat-tri     src/trivial     dlist-tri-flat-tri
+trivial-dlist-tri-mat-tri      src/trivial     dlist-tri-mat-tri
+trivial-draw2arrays    src/trivial     draw2arrays
+trivial-drawarrays     src/trivial     drawarrays
+trivial-drawelements   src/trivial     drawelements
+trivial-drawelements-large     src/trivial     drawelements-large
+trivial-drawrange      src/trivial     drawrange
+trivial-flat-clip      src/trivial     flat-clip
+trivial-fs-tri src/trivial     fs-tri
+trivial-line   src/trivial     line
+trivial-line-clip      src/trivial     line-clip
+trivial-line-cull      src/trivial     line-cull
+trivial-line-flat      src/trivial     line-flat
+trivial-line-smooth    src/trivial     line-smooth
+trivial-line-stipple-wide      src/trivial     line-stipple-wide
+trivial-line-userclip  src/trivial     line-userclip
+trivial-line-userclip-clip     src/trivial     line-userclip-clip
+trivial-line-userclip-nop      src/trivial     line-userclip-nop
+trivial-line-userclip-nop-clip src/trivial     line-userclip-nop-clip
+trivial-line-wide      src/trivial     line-wide
+trivial-line-xor       src/trivial     line-xor
+trivial-lineloop       src/trivial     lineloop
+trivial-lineloop-clip  src/trivial     lineloop-clip
+trivial-lineloop-elts  src/trivial     lineloop-elts
+trivial-linestrip      src/trivial     linestrip
+trivial-linestrip-clip src/trivial     linestrip-clip
+trivial-linestrip-flat-stipple src/trivial     linestrip-flat-stipple
+trivial-linestrip-stipple      src/trivial     linestrip-stipple
+trivial-linestrip-stipple-wide src/trivial     linestrip-stipple-wide
+trivial-long-fixed-func        src/trivial     long-fixed-func
+trivial-pgon-mode      src/trivial     pgon-mode
+trivial-point  src/trivial     point
+trivial-point-clip     src/trivial     point-clip
+trivial-point-param    src/trivial     point-param
+trivial-point-sprite   src/trivial     point-sprite
+trivial-point-wide     src/trivial     point-wide
+trivial-point-wide-smooth      src/trivial     point-wide-smooth
+trivial-poly   src/trivial     poly
+trivial-poly-flat      src/trivial     poly-flat
+trivial-poly-flat-clip src/trivial     poly-flat-clip
+trivial-poly-flat-unfilled-clip        src/trivial     poly-flat-unfilled-clip
+trivial-poly-unfilled  src/trivial     poly-unfilled
+trivial-quad   src/trivial     quad
+trivial-quad-clip      src/trivial     quad-clip
+trivial-quad-clip-all-vertices src/trivial     quad-clip-all-vertices
+trivial-quad-clip-nearplane    src/trivial     quad-clip-nearplane
+trivial-quad-degenerate        src/trivial     quad-degenerate
+trivial-quad-flat      src/trivial     quad-flat
+trivial-quad-offset-factor     src/trivial     quad-offset-factor
+trivial-quad-offset-unfilled   src/trivial     quad-offset-unfilled
+trivial-quad-offset-units      src/trivial     quad-offset-units
+trivial-quad-tex-2d    src/trivial     quad-tex-2d
+trivial-quad-tex-3d    src/trivial     quad-tex-3d
+trivial-quad-tex-alpha src/trivial     quad-tex-alpha
+trivial-quad-tex-pbo   src/trivial     quad-tex-pbo
+trivial-quad-tex-sub   src/trivial     quad-tex-sub
+trivial-quad-unfilled  src/trivial     quad-unfilled
+trivial-quad-unfilled-clip     src/trivial     quad-unfilled-clip
+trivial-quad-unfilled-stipple  src/trivial     quad-unfilled-stipple
+trivial-quads  src/trivial     quads
+trivial-quadstrip      src/trivial     quadstrip
+trivial-quadstrip-clip src/trivial     quadstrip-clip
+trivial-quadstrip-cont src/trivial     quadstrip-cont
+trivial-quadstrip-flat src/trivial     quadstrip-flat
+trivial-readpixels     src/trivial     readpixels
+trivial-sub-tex        src/trivial     sub-tex
+trivial-tex-quads      src/trivial     tex-quads
+trivial-tri    src/trivial     tri
+trivial-tri-alpha      src/trivial     tri-alpha
+trivial-tri-alpha-tex  src/trivial     tri-alpha-tex
+trivial-tri-array-interleaved  src/trivial     tri-array-interleaved
+trivial-tri-blend      src/trivial     tri-blend
+trivial-tri-blend-color        src/trivial     tri-blend-color
+trivial-tri-blend-max  src/trivial     tri-blend-max
+trivial-tri-blend-min  src/trivial     tri-blend-min
+trivial-tri-blend-revsub       src/trivial     tri-blend-revsub
+trivial-tri-blend-sub  src/trivial     tri-blend-sub
+trivial-tri-clear      src/trivial     tri-clear
+trivial-tri-clip       src/trivial     tri-clip
+trivial-tri-cull       src/trivial     tri-cull
+trivial-tri-cull-both  src/trivial     tri-cull-both
+trivial-tri-dlist      src/trivial     tri-dlist
+trivial-tri-edgeflag   src/trivial     tri-edgeflag
+trivial-tri-edgeflag-array     src/trivial     tri-edgeflag-array
+trivial-tri-fbo        src/trivial     tri-fbo
+trivial-tri-fbo-tex    src/trivial     tri-fbo-tex
+trivial-tri-fbo-tex-mip        src/trivial     tri-fbo-tex-mip
+trivial-tri-flat       src/trivial     tri-flat
+trivial-tri-flat-clip  src/trivial     tri-flat-clip
+trivial-tri-fog        src/trivial     tri-fog
+trivial-tri-fp src/trivial     tri-fp
+trivial-tri-fp-const-imm       src/trivial     tri-fp-const-imm
+trivial-tri-lit        src/trivial     tri-lit
+trivial-tri-lit-material       src/trivial     tri-lit-material
+trivial-tri-logicop-none       src/trivial     tri-logicop-none
+trivial-tri-logicop-xor        src/trivial     tri-logicop-xor
+trivial-tri-mask-tri   src/trivial     tri-mask-tri
+trivial-tri-multitex-vbo       src/trivial     tri-multitex-vbo
+trivial-tri-orig       src/trivial     tri-orig
+trivial-tri-point-line-clipped src/trivial     tri-point-line-clipped
+trivial-tri-query      src/trivial     tri-query
+trivial-tri-repeat     src/trivial     tri-repeat
+trivial-tri-scissor-tri        src/trivial     tri-scissor-tri
+trivial-tri-square     src/trivial     tri-square
+trivial-tri-stencil    src/trivial     tri-stencil
+trivial-tri-stipple    src/trivial     tri-stipple
+trivial-tri-tex        src/trivial     tri-tex
+trivial-tri-tex-1d     src/trivial     tri-tex-1d
+trivial-tri-tex-3d     src/trivial     tri-tex-3d
+trivial-tri-tri        src/trivial     tri-tri
+trivial-tri-unfilled   src/trivial     tri-unfilled
+trivial-tri-unfilled-clip      src/trivial     tri-unfilled-clip
+trivial-tri-unfilled-edgeflag  src/trivial     tri-unfilled-edgeflag
+trivial-tri-unfilled-fog       src/trivial     tri-unfilled-fog
+trivial-tri-unfilled-point     src/trivial     tri-unfilled-point
+trivial-tri-unfilled-smooth    src/trivial     tri-unfilled-smooth
+trivial-tri-unfilled-tri       src/trivial     tri-unfilled-tri
+trivial-tri-unfilled-tri-lit   src/trivial     tri-unfilled-tri-lit
+trivial-tri-unfilled-userclip  src/trivial     tri-unfilled-userclip
+trivial-tri-unfilled-userclip-stip     src/trivial     tri-unfilled-userclip-stip
+trivial-tri-userclip   src/trivial     tri-userclip
+trivial-tri-viewport   src/trivial     tri-viewport
+trivial-tri-z  src/trivial     tri-z
+trivial-tri-z-9        src/trivial     tri-z-9
+trivial-tri-z-eq       src/trivial     tri-z-eq
+trivial-trifan src/trivial     trifan
+trivial-trifan-flat    src/trivial     trifan-flat
+trivial-trifan-flat-clip       src/trivial     trifan-flat-clip
+trivial-trifan-flat-unfilled-clip      src/trivial     trifan-flat-unfilled-clip
+trivial-trifan-unfilled        src/trivial     trifan-unfilled
+trivial-tristrip       src/trivial     tristrip
+trivial-tristrip-clip  src/trivial     tristrip-clip
+trivial-tristrip-flat  src/trivial     tristrip-flat
+trivial-vbo-drawarrays src/trivial     vbo-drawarrays
+trivial-vbo-drawelements       src/trivial     vbo-drawelements
+trivial-vbo-drawrange  src/trivial     vbo-drawrange
+trivial-vbo-noninterleaved     src/trivial     vbo-noninterleaved
+trivial-vbo-tri        src/trivial     vbo-tri
+trivial-vp-array       src/trivial     vp-array
+trivial-vp-array-hf    src/trivial     vp-array-hf
+trivial-vp-array-int   src/trivial     vp-array-int
+trivial-vp-clip        src/trivial     vp-clip
+trivial-vp-line-clip   src/trivial     vp-line-clip
+trivial-vp-tri src/trivial     vp-tri
+trivial-vp-tri-cb      src/trivial     vp-tri-cb
+trivial-vp-tri-cb-pos  src/trivial     vp-tri-cb-pos
+trivial-vp-tri-cb-tex  src/trivial     vp-tri-cb-tex
+trivial-vp-tri-imm     src/trivial     vp-tri-imm
+trivial-vp-tri-invariant       src/trivial     vp-tri-invariant
+trivial-vp-tri-swap    src/trivial     vp-tri-swap
+trivial-vp-tri-tex     src/trivial     vp-tri-tex
+trivial-vp-unfilled    src/trivial     vp-unfilled
+
+demos_arbfplight       src/demos       arbfplight
+demos_arbfslight       src/demos       arbfslight
+demos_arbocclude       src/demos       arbocclude
+demos_arbocclude2      src/demos       arbocclude2
+demos_bounce   src/demos       bounce
+demos_clearspd src/demos       clearspd
+demos_copypix  src/demos       copypix
+demos_cubemap  src/demos       cubemap
+demos_cuberender       src/demos       cuberender
+demos_dinoshade        src/demos       dinoshade
+demos_dissolve src/demos       dissolve
+demos_drawpix  src/demos       drawpix
+demos_engine   src/demos       engine
+demos_fbo_firecube     src/demos       fbo_firecube
+demos_fbotexture       src/demos       fbotexture
+demos_fire     src/demos       fire
+demos_fogcoord src/demos       fogcoord
+demos_fplight  src/demos       fplight
+demos_fslight  src/demos       fslight
+demos_gamma    src/demos       gamma
+demos_gearbox  src/demos       gearbox
+demos_gears    src/demos       gears
+demos_geartrain        src/demos       geartrain
+demos_glinfo   src/demos       glinfo
+demos_gloss    src/demos       gloss
+demos_gltestperf       src/demos       gltestperf
+demos_ipers    src/demos       ipers
+demos_isosurf  src/demos       isosurf
+demos_lodbias  src/demos       lodbias
+demos_morph3d  src/demos       morph3d
+demos_multiarb src/demos       multiarb
+demos_paltex   src/demos       paltex
+demos_pointblast       src/demos       pointblast
+demos_projtex  src/demos       projtex
+demos_rain     src/demos       rain
+demos_ray      src/demos       ray
+demos_readpix  src/demos       readpix
+demos_reflect  src/demos       reflect
+demos_renormal src/demos       renormal
+demos_shadowtex        src/demos       shadowtex
+demos_singlebuffer     src/demos       singlebuffer
+demos_spectex  src/demos       spectex
+demos_spriteblast      src/demos       spriteblast
+demos_stex3d   src/demos       stex3d
+demos_teapot   src/demos       teapot
+demos_terrain  src/demos       terrain
+demos_tessdemo src/demos       tessdemo
+demos_texcyl   src/demos       texcyl
+demos_texenv   src/demos       texenv
+demos_textures src/demos       textures
+demos_trispd   src/demos       trispd
+demos_tunnel   src/demos       tunnel
+demos_tunnel2  src/demos       tunnel2
+demos_vao_demo src/demos       vao_demo
+demos_winpos   src/demos       winpos
+
+#fp-fp src/fp  fp-tri # XXX: parameterized
+fp-point-position      src/fp  point-position
+fp-tri-depth   src/fp  tri-depth
+fp-tri-depth2  src/fp  tri-depth2
+fp-tri-depthwrite      src/fp  tri-depthwrite
+fp-tri-depthwrite2     src/fp  tri-depthwrite2
+fp-tri-param   src/fp  tri-param
+fp-tri-tex     src/fp  tri-tex
+
+#fpglsl-fp-tri src/fpglsl      fp-tri
+
+glsl-array     src/glsl        array
+glsl-bezier    src/glsl        bezier
+glsl-bitmap    src/glsl        bitmap
+glsl-brick     src/glsl        brick
+glsl-bump      src/glsl        bump
+glsl-convolutions      src/glsl        convolutions
+glsl-deriv     src/glsl        deriv
+glsl-fragcoord src/glsl        fragcoord
+glsl-fsraytrace        src/glsl        fsraytrace
+glsl-geom-sprites      src/glsl        geom-sprites
+glsl-geom-stipple-lines        src/glsl        geom-stipple-lines
+glsl-geom-wide-lines   src/glsl        geom-wide-lines
+glsl-identity  src/glsl        identity
+glsl-linktest  src/glsl        linktest
+glsl-mandelbrot        src/glsl        mandelbrot
+glsl-multinoise        src/glsl        multinoise
+glsl-multitex  src/glsl        multitex
+glsl-noise     src/glsl        noise
+glsl-noise2    src/glsl        noise2
+glsl-pointcoord        src/glsl        pointcoord
+glsl-points    src/glsl        points
+glsl-samplers  src/glsl        samplers
+glsl-shadow_sampler    src/glsl        shadow_sampler
+glsl-shtest    src/glsl        shtest
+glsl-skinning  src/glsl        skinning
+glsl-texaaline src/glsl        texaaline
+glsl-texdemo1  src/glsl        texdemo1
+glsl-toyball   src/glsl        toyball
+glsl-trirast   src/glsl        trirast
+glsl-twoside   src/glsl        twoside
+glsl-vert-or-frag-only src/glsl        vert-or-frag-only
+glsl-vert-tex  src/glsl        vert-tex
+glsl-vsraytrace        src/glsl        vsraytrace
+
+#gs_gs-tri     src/gs  gs-tri
+
+#perf-copytex  src/perf        copytex
+#perf-drawoverhead     src/perf        drawoverhead
+#perf-fbobind  src/perf        fbobind
+#perf-fill     src/perf        fill
+#perf-genmipmap        src/perf        genmipmap
+#perf-readpixels       src/perf        readpixels
+#perf-swapbuffers      src/perf        swapbuffers
+#perf-teximage src/perf        teximage
+#perf-vbo      src/perf        vbo
+#perf-vertexrate       src/perf        vertexrate
+
+redbook-aaindex        src/redbook     aaindex
+redbook-aapoly src/redbook     aapoly
+redbook-aargb  src/redbook     aargb
+redbook-accanti        src/redbook     accanti
+redbook-accpersp       src/redbook     accpersp
+redbook-alpha  src/redbook     alpha
+redbook-alpha3D        src/redbook     alpha3D
+redbook-anti   src/redbook     anti
+redbook-bezcurve       src/redbook     bezcurve
+redbook-bezmesh        src/redbook     bezmesh
+redbook-checker        src/redbook     checker
+redbook-clip   src/redbook     clip
+redbook-colormat       src/redbook     colormat
+redbook-combiner       src/redbook     combiner
+redbook-convolution    src/redbook     convolution
+redbook-cube   src/redbook     cube
+redbook-cubemap        src/redbook     cubemap
+redbook-depthcue       src/redbook     depthcue
+redbook-dof    src/redbook     dof
+redbook-double src/redbook     double
+redbook-drawf  src/redbook     drawf
+redbook-feedback       src/redbook     feedback
+redbook-fog    src/redbook     fog
+redbook-fogcoord       src/redbook     fogcoord
+redbook-fogindex       src/redbook     fogindex
+redbook-font   src/redbook     font
+redbook-hello  src/redbook     hello
+redbook-histogram      src/redbook     histogram
+redbook-image  src/redbook     image
+redbook-light  src/redbook     light
+redbook-lines  src/redbook     lines
+redbook-list   src/redbook     list
+redbook-material       src/redbook     material
+redbook-minmax src/redbook     minmax
+redbook-mipmap src/redbook     mipmap
+redbook-model  src/redbook     model
+redbook-movelight      src/redbook     movelight
+redbook-multisamp      src/redbook     multisamp
+redbook-multitex       src/redbook     multitex
+redbook-mvarray        src/redbook     mvarray
+redbook-nurbs  src/redbook     nurbs
+redbook-pickdepth      src/redbook     pickdepth
+redbook-picksquare     src/redbook     picksquare
+redbook-plane  src/redbook     plane
+redbook-planet src/redbook     planet
+redbook-pointp src/redbook     pointp
+redbook-polyoff        src/redbook     polyoff
+redbook-polys  src/redbook     polys
+redbook-quadric        src/redbook     quadric
+redbook-robot  src/redbook     robot
+redbook-sccolorlight   src/redbook     sccolorlight
+redbook-scene  src/redbook     scene
+redbook-scenebamb      src/redbook     scenebamb
+redbook-sceneflat      src/redbook     sceneflat
+redbook-select src/redbook     select
+redbook-shadowmap      src/redbook     shadowmap
+redbook-smooth src/redbook     smooth
+redbook-stencil        src/redbook     stencil
+redbook-stroke src/redbook     stroke
+redbook-surface        src/redbook     surface
+redbook-surfpoints     src/redbook     surfpoints
+redbook-teaambient     src/redbook     teaambient
+redbook-teapots        src/redbook     teapots
+redbook-tess   src/redbook     tess
+redbook-tesswind       src/redbook     tesswind
+redbook-texbind        src/redbook     texbind
+redbook-texgen src/redbook     texgen
+redbook-texprox        src/redbook     texprox
+redbook-texsub src/redbook     texsub
+redbook-texture3d      src/redbook     texture3d
+redbook-texturesurf    src/redbook     texturesurf
+redbook-torus  src/redbook     torus
+redbook-trim   src/redbook     trim
+redbook-unproject      src/redbook     unproject
+redbook-varray src/redbook     varray
+redbook-wrap   src/redbook     wrap
+
+samples-accum  src/samples     accum
+samples-bitmap1        src/samples     bitmap1
+samples-bitmap2        src/samples     bitmap2
+samples-blendeq        src/samples     blendeq
+samples-blendxor       src/samples     blendxor
+samples-copy   src/samples     copy
+samples-cursor src/samples     cursor
+samples-depth  src/samples     depth
+samples-eval   src/samples     eval
+samples-fog    src/samples     fog
+samples-font   src/samples     font
+samples-line   src/samples     line
+samples-logo   src/samples     logo
+samples-nurb   src/samples     nurb
+samples-oglinfo        src/samples     oglinfo
+samples-olympic        src/samples     olympic
+samples-overlay        src/samples     overlay
+samples-point  src/samples     point
+samples-prim   src/samples     prim
+samples-quad   src/samples     quad
+samples-select src/samples     select
+samples-shape  src/samples     shape
+samples-sphere src/samples     sphere
+samples-star   src/samples     star
+samples-stencil        src/samples     stencil
+samples-stretch        src/samples     stretch
+samples-texture        src/samples     texture
+samples-tri    src/samples     tri
+samples-wave   src/samples     wave
+
+#slang-cltest  src/slang       cltest
+#slang-sotest  src/slang       sotest
+#slang-vstest  src/slang       vstest
+
+tests_afsmultiarb      src/tests       afsmultiarb
+tests_antialias        src/tests       antialias
+tests_arbfpspec        src/tests       arbfpspec
+tests_arbfptest1       src/tests       arbfptest1
+tests_arbfptexture     src/tests       arbfptexture
+tests_arbfptrig        src/tests       arbfptrig
+tests_arbgpuprog       src/tests       arbgpuprog
+tests_arbnpot  src/tests       arbnpot
+tests_arbnpot-mipmap   src/tests       arbnpot-mipmap
+tests_arbvptest1       src/tests       arbvptest1
+tests_arbvptest3       src/tests       arbvptest3
+tests_arbvptorus       src/tests       arbvptorus
+tests_arbvpwarpmesh    src/tests       arbvpwarpmesh
+tests_arraytexture     src/tests       arraytexture
+tests_auxbuffer        src/tests       auxbuffer
+tests_blendxor src/tests       blendxor
+tests_blitfb   src/tests       blitfb
+tests_bufferobj        src/tests       bufferobj
+tests_bug_3050 src/tests       bug_3050
+tests_bug_3101 src/tests       bug_3101
+tests_bug_3195 src/tests       bug_3195
+tests_bug_texstore_i8  src/tests       bug_texstore_i8
+tests_bumpmap  src/tests       bumpmap
+tests_calibrate_rast   src/tests       calibrate_rast
+tests_condrender       src/tests       condrender
+#tests_copypixrate     src/tests       copypixrate # XXX: benchmark
+tests_cva      src/tests       cva
+tests_cva_huge src/tests       cva_huge
+tests_cylwrap  src/tests       cylwrap
+tests_drawbuffers      src/tests       drawbuffers
+tests_drawbuffers2     src/tests       drawbuffers2
+tests_drawstencil      src/tests       drawstencil
+tests_exactrast        src/tests       exactrast
+tests_ext422square     src/tests       ext422square
+tests_fbotest1 src/tests       fbotest1
+tests_fbotest2 src/tests       fbotest2
+tests_fbotest3 src/tests       fbotest3
+#tests_fillrate        src/tests       fillrate # XXX: benchmark
+tests_floattex src/tests       floattex
+tests_fogcoord src/tests       fogcoord
+tests_fptest1  src/tests       fptest1
+tests_fptexture        src/tests       fptexture
+tests_getteximage      src/tests       getteximage
+tests_glutfx   src/tests       glutfx
+tests_interleave       src/tests       interleave
+tests_invert   src/tests       invert
+tests_jkrahntest       src/tests       jkrahntest
+tests_lineclip src/tests       lineclip
+tests_manytex  src/tests       manytex
+tests_mapbufrange      src/tests       mapbufrange
+tests_minmag   src/tests       minmag
+tests_mipgen   src/tests       mipgen
+tests_mipmap_comp      src/tests       mipmap_comp
+tests_mipmap_comp_tests        src/tests       mipmap_comp_tests
+tests_mipmap_limits    src/tests       mipmap_limits
+tests_mipmap_tunnel    src/tests       mipmap_tunnel
+tests_mipmap_view      src/tests       mipmap_view
+tests_multipal src/tests       multipal
+tests_multitexarray    src/tests       multitexarray
+tests_multiwindow      src/tests       multiwindow
+tests_no_s3tc  src/tests       no_s3tc
+tests_occlude  src/tests       occlude
+tests_packedpixels     src/tests       packedpixels
+tests_pbo      src/tests       pbo
+tests_persp_hint       src/tests       persp_hint
+tests_prim     src/tests       prim
+tests_prog_parameter   src/tests       prog_parameter
+tests_quads    src/tests       quads
+tests_random   src/tests       random
+#tests_readrate        src/tests       readrate # XXX: benchmark
+tests_rubberband       src/tests       rubberband
+tests_scissor  src/tests       scissor
+tests_scissor-viewport src/tests       scissor-viewport
+tests_seccolor src/tests       seccolor
+tests_shader-interp    src/tests       shader-interp
+tests_shader_api       src/tests       shader_api
+tests_shadow-sample    src/tests       shadow-sample
+tests_sharedtex        src/tests       sharedtex
+tests_stencilreaddraw  src/tests       stencilreaddraw
+tests_stencilwrap      src/tests       stencilwrap
+tests_step     src/tests       step
+tests_streaming_rect   src/tests       streaming_rect
+tests_subtex   src/tests       subtex
+#tests_subtexrate      src/tests       subtexrate # XXX: benchmark
+tests_tex1d    src/tests       tex1d
+tests_texcmp   src/tests       texcmp
+tests_texcompress2     src/tests       texcompress2
+tests_texcompsub       src/tests       texcompsub
+tests_texdown  src/tests       texdown
+tests_texfilt  src/tests       texfilt
+tests_texgenmix        src/tests       texgenmix
+tests_texleak  src/tests       texleak
+tests_texline  src/tests       texline
+tests_texobj   src/tests       texobj
+tests_texobjshare      src/tests       texobjshare
+tests_texrect  src/tests       texrect
+tests_unfilledclip     src/tests       unfilledclip
+tests_vparray  src/tests       vparray
+tests_vpeval   src/tests       vpeval
+tests_vptest1  src/tests       vptest1
+tests_vptest2  src/tests       vptest2
+tests_vptest3  src/tests       vptest3
+tests_vptorus  src/tests       vptorus
+tests_vpwarpmesh       src/tests       vpwarpmesh
+tests_yuvrect  src/tests       yuvrect
+tests_yuvsquare        src/tests       yuvsquare
+tests_zbitmap  src/tests       zbitmap
+tests_zcomp    src/tests       zcomp
+tests_zdrawpix src/tests       zdrawpix
+tests_zreaddraw        src/tests       zreaddraw
+
+#vp_vp-tris    src/vp  vp-tris
+#vpglsl_vp-tris        src/vpglsl      vp-tris
+
+xdemos_corender        src/xdemos      corender
+xdemos_glsync  src/xdemos      glsync
+#xdemos_glthreads      src/xdemos      glthreads # XXX: multithreaded
+xdemos_glxcontexts     src/xdemos      glxcontexts
+xdemos_glxdemo src/xdemos      glxdemo
+xdemos_glxgears        src/xdemos      glxgears
+xdemos_glxgears_fbconfig       src/xdemos      glxgears_fbconfig
+xdemos_glxgears_pixmap src/xdemos      glxgears_pixmap
+xdemos_glxheads        src/xdemos      glxheads
+xdemos_glxinfo src/xdemos      glxinfo
+xdemos_glxpbdemo       src/xdemos      glxpbdemo
+xdemos_glxpixmap       src/xdemos      glxpixmap
+xdemos_glxsnoop        src/xdemos      glxsnoop
+xdemos_glxswapcontrol  src/xdemos      glxswapcontrol
+xdemos_manywin src/xdemos      manywin
+xdemos_msctest src/xdemos      msctest
+xdemos_multictx        src/xdemos      multictx
+xdemos_offset  src/xdemos      offset
+xdemos_omlsync src/xdemos      omlsync
+xdemos_opencloseopen   src/xdemos      opencloseopen
+xdemos_overlay src/xdemos      overlay
+xdemos_pbdemo  src/xdemos      pbdemo
+xdemos_pbinfo  src/xdemos      pbinfo
+xdemos_shape   src/xdemos      shape
+xdemos_sharedtex       src/xdemos      sharedtex
+#xdemos_sharedtex_mt   src/xdemos      sharedtex_mt # XXX: multithreaded
+xdemos_texture_from_pixmap     src/xdemos      texture_from_pixmap
+xdemos_wincopy src/xdemos      wincopy
+xdemos_xfont   src/xdemos      xfont
+xdemos_xrotfontdemo    src/xdemos      xrotfontdemo
+xdemos_yuvrect_client  src/xdemos      yuvrect_client
diff --git a/mesademos.py b/mesademos.py
deleted file mode 100755 (executable)
index 21b0af4..0000000
+++ /dev/null
@@ -1,650 +0,0 @@
-#!/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()
diff --git a/ogl-samples.spec b/ogl-samples.spec
new file mode 100644 (file)
index 0000000..8b0522e
--- /dev/null
@@ -0,0 +1,104 @@
+# ogl-samples
+# http://www.opengl.org/sdk/docs/tutorials/OGLSamples/
+#
+# name  cwd  command  args  ...
+ogl-210-buffer-type    build   release/ogl-210-buffer-type
+ogl-210-buffer-update  build   release/ogl-210-buffer-update
+ogl-210-draw-elements  build   release/ogl-210-draw-elements
+ogl-210-draw-range     build   release/ogl-210-draw-range
+ogl-210-query-occlusion        build   release/ogl-210-query-occlusion
+ogl-210-rasterizer-viewport    build   release/ogl-210-rasterizer-viewport
+ogl-210-sampler-anisotropy-ext build   release/ogl-210-sampler-anisotropy-ext
+ogl-210-sampler-filter build   release/ogl-210-sampler-filter
+ogl-210-sampler-wrap   build   release/ogl-210-sampler-wrap
+ogl-210-test-scissor   build   release/ogl-210-test-scissor
+ogl-210-texture-2d     build   release/ogl-210-texture-2d
+ogl-210-texture-compressed-ext build   release/ogl-210-texture-compressed-ext
+ogl-300-fbo-multisample        build   release/ogl-300-fbo-multisample
+ogl-300-test-alpha     build   release/ogl-300-test-alpha
+ogl-330-blend-index    build   release/ogl-330-blend-index
+ogl-330-blend-rtt      build   release/ogl-330-blend-rtt
+ogl-330-buffer-type    build   release/ogl-330-buffer-type
+ogl-330-buffer-uniform build   release/ogl-330-buffer-uniform
+ogl-330-buffer-uniform-shared  build   release/ogl-330-buffer-uniform-shared
+ogl-330-buffer-update  build   release/ogl-330-buffer-update
+ogl-330-draw-instanced build   release/ogl-330-draw-instanced
+ogl-330-draw-instanced-array   build   release/ogl-330-draw-instanced-array
+ogl-330-draw-instanced-array-dsa-gtc   build   release/ogl-330-draw-instanced-array-dsa-gtc
+ogl-330-draw-multiple  build   release/ogl-330-draw-multiple
+ogl-330-error-sampler-gather   build   release/ogl-330-error-sampler-gather
+ogl-330-error-sampler-offset   build   release/ogl-330-error-sampler-offset
+ogl-330-error-vao      build   release/ogl-330-error-vao
+ogl-330-fbo-blit       build   release/ogl-330-fbo-blit
+ogl-330-fbo-layered    build   release/ogl-330-fbo-layered
+ogl-330-fbo-mipmaps    build   release/ogl-330-fbo-mipmaps
+ogl-330-fbo-multisample        build   release/ogl-330-fbo-multisample
+ogl-330-fbo-multisample-custom-resolve build   release/ogl-330-fbo-multisample-custom-resolve
+ogl-330-fbo-rtt        build   release/ogl-330-fbo-rtt
+ogl-330-fbo-rtt-texture-array  build   release/ogl-330-fbo-rtt-texture-array
+ogl-330-fbo-srgb       build   release/ogl-330-fbo-srgb
+ogl-330-glsl-discard   build   release/ogl-330-glsl-discard
+ogl-330-primitive-flat-shading build   release/ogl-330-primitive-flat-shading
+ogl-330-primitive-smooth-shading       build   release/ogl-330-primitive-smooth-shading
+ogl-330-query-conditional      build   release/ogl-330-query-conditional
+ogl-330-query-occlusion        build   release/ogl-330-query-occlusion
+ogl-330-query-timer    build   release/ogl-330-query-timer
+ogl-330-rasterizer-viewport    build   release/ogl-330-rasterizer-viewport
+ogl-330-sampler-anisotropy-ext build   release/ogl-330-sampler-anisotropy-ext
+ogl-330-sampler-fetch  build   release/ogl-330-sampler-fetch
+ogl-330-sampler-filter build   release/ogl-330-sampler-filter
+ogl-330-sampler-object build   release/ogl-330-sampler-object
+ogl-330-sampler-offset build   release/ogl-330-sampler-offset
+ogl-330-sampler-wrap   build   release/ogl-330-sampler-wrap
+ogl-330-sync   build   release/ogl-330-sync
+ogl-330-test-scissor   build   release/ogl-330-test-scissor
+ogl-330-texture-2d     build   release/ogl-330-texture-2d
+ogl-330-texture-array  build   release/ogl-330-texture-array
+ogl-330-texture-buffer build   release/ogl-330-texture-buffer
+ogl-330-texture-compressed-ext build   release/ogl-330-texture-compressed-ext
+ogl-330-texture-cube   build   release/ogl-330-texture-cube
+ogl-330-texture-rect   build   release/ogl-330-texture-rect
+ogl-330-texture-streaming      build   release/ogl-330-texture-streaming
+ogl-330-texture-swizzle        build   release/ogl-330-texture-swizzle
+ogl-330-transform-feedback     build   release/ogl-330-transform-feedback
+ogl-400-blend-rtt      build   release/ogl-400-blend-rtt
+ogl-400-buffer-uniform build   release/ogl-400-buffer-uniform
+ogl-400-buffer-uniform-shared-gtc      build   release/ogl-400-buffer-uniform-shared-gtc
+ogl-400-draw-indirect  build   release/ogl-400-draw-indirect
+ogl-400-error-sampler-fetch    build   release/ogl-400-error-sampler-fetch
+ogl-400-fbo-layered    build   release/ogl-400-fbo-layered
+ogl-400-fbo-multisample        build   release/ogl-400-fbo-multisample
+ogl-400-fbo-rtt        build   release/ogl-400-fbo-rtt
+ogl-400-fbo-rtt-texture-array  build   release/ogl-400-fbo-rtt-texture-array
+ogl-400-primitive-instanced    build   release/ogl-400-primitive-instanced
+ogl-400-primitive-smooth-shading       build   release/ogl-400-primitive-smooth-shading
+ogl-400-primitive-tessellation build   release/ogl-400-primitive-tessellation
+ogl-400-program-64     build   release/ogl-400-program-64
+ogl-400-program-subroutine     build   release/ogl-400-program-subroutine
+ogl-400-program-varying-blocks build   release/ogl-400-program-varying-blocks
+ogl-400-program-varying-structs        build   release/ogl-400-program-varying-structs
+ogl-400-sampler-array  build   release/ogl-400-sampler-array
+ogl-400-sampler-array-gtc      build   release/ogl-400-sampler-array-gtc
+ogl-400-sampler-fetch  build   release/ogl-400-sampler-fetch
+ogl-400-sampler-gather build   release/ogl-400-sampler-gather
+ogl-400-texture-buffer-rgb     build   release/ogl-400-texture-buffer-rgb
+ogl-400-texture-compressed-arb build   release/ogl-400-texture-compressed-arb
+ogl-400-transform-feedback-object      build   release/ogl-400-transform-feedback-object
+ogl-410-debug-output-arb       build   release/ogl-410-debug-output-arb
+ogl-410-fbo-layered    build   release/ogl-410-fbo-layered
+ogl-410-fbo-multisample-dsa-ext        build   release/ogl-410-fbo-multisample-dsa-ext
+ogl-410-fbo-multisample-dsa-gtc        build   release/ogl-410-fbo-multisample-dsa-gtc
+ogl-410-fbo-multisample-position-amd   build   release/ogl-410-fbo-multisample-position-amd
+ogl-410-fbo-rtt-dsa-ext        build   release/ogl-410-fbo-rtt-dsa-ext
+ogl-410-primitive-bindless-nv  build   release/ogl-410-primitive-bindless-nv
+ogl-410-primitive-instanced    build   release/ogl-410-primitive-instanced
+ogl-410-primitive-tessellation-2       build   release/ogl-410-primitive-tessellation-2
+ogl-410-primitive-tessellation-5       build   release/ogl-410-primitive-tessellation-5
+ogl-410-program-64     build   release/ogl-410-program-64
+ogl-410-program-binary build   release/ogl-410-program-binary
+ogl-410-program-separate-dsa-gtc       build   release/ogl-410-program-separate-dsa-gtc
+ogl-410-program-varying-gtc    build   release/ogl-410-program-varying-gtc
+ogl-410-sampler-fetch-dsa-ext  build   release/ogl-410-sampler-fetch-dsa-ext
+ogl-410-texture-barrier-nv     build   release/ogl-410-texture-barrier-nv
+ogl-410-texture-copy-nv        build   release/ogl-410-texture-copy-nv
+ogl-410-texture-image-ext      build   release/ogl-410-texture-image-ext
diff --git a/test.py b/test.py
index 3c96c12241dc12496b23fd5a826215db114fae76..ec25fabad1e1d4b9eef4c8ac79eede225b8c2b0b 100755 (executable)
--- a/test.py
+++ b/test.py
@@ -111,7 +111,7 @@ class Report:
 
 class TestCase:
 
 
 class TestCase:
 
-    def __init__(self, name, args, cwd=None, build = '.', results = '.'):
+    def __init__(self, name, args, cwd=None, build=None, results = '.'):
         self.name = name
         self.args = args
         self.cwd = cwd
         self.name = name
         self.args = args
         self.cwd = cwd
@@ -121,14 +121,20 @@ class TestCase:
         if not os.path.exists(results):
             os.makedirs(results)
 
         if not os.path.exists(results):
             os.makedirs(results)
 
+
+    def _get_build_path(self, path):
+        if self.build is not None:
+            path = os.path.abspath(os.path.join(self.build, path))
+            if not os.path.exists(path):
+                sys.stderr.write('error: %s does not exist\n' % path)
+                sys.exit(1)
+        return path
+
     def run(self, report):
 
         trace = os.path.abspath(os.path.join(self.results, self.name + '.trace'))
 
     def run(self, report):
 
         trace = os.path.abspath(os.path.join(self.results, self.name + '.trace'))
 
-        ld_preload = os.path.abspath(os.path.join(self.build, 'glxtrace.so'))
-        if not os.path.exists(ld_preload):
-            sys.stderr.write('error: could not find %s\n' % ld_preload)
-            sys.exit(1)
+        ld_preload = self._get_build_path('glxtrace.so')
 
         env = os.environ.copy()
         env['LD_PRELOAD'] = ld_preload
 
         env = os.environ.copy()
         env['LD_PRELOAD'] = ld_preload
@@ -166,11 +172,10 @@ class TestCase:
                 p.terminate()
                 p.wait()
             elif p.returncode:
                 p.terminate()
                 p.wait()
             elif p.returncode:
-                print p.returncode
                 sys.stdout.write('FAIL (trace)\n')
                 return
 
                 sys.stdout.write('FAIL (trace)\n')
                 return
 
-        p = popen([os.path.join(self.build, 'tracedump'), trace], stdout=subprocess.PIPE)
+        p = popen([self._get_build_path('tracedump'), trace], stdout=subprocess.PIPE)
         call_re = re.compile('^([0-9]+) (\w+)\(')
         swapbuffers = 0
         flushes = 0
         call_re = re.compile('^([0-9]+) (\w+)\(')
         swapbuffers = 0
         flushes = 0
@@ -187,13 +192,12 @@ class TestCase:
                     swapbuffers += 1
                 if function_name in ('glFlush', 'glFinish'):
                     flushes += 1
                     swapbuffers += 1
                 if function_name in ('glFlush', 'glFinish'):
                     flushes += 1
-            #print orig_line
         p.wait()
         if p.returncode != 0:
             sys.stdout.write('FAIL (tracedump)\n')
             return
 
         p.wait()
         if p.returncode != 0:
             sys.stdout.write('FAIL (tracedump)\n')
             return
 
-        args = [os.path.join(self.build, 'glretrace')]
+        args = [self._get_build_path('glretrace')]
         if swapbuffers:
             args += ['-db']
             frames = swapbuffers
         if swapbuffers:
             args += ['-db']
             frames = swapbuffers
@@ -250,15 +254,15 @@ def main():
         usage='\n\t%prog [options] -- program [args] ...',
         version='%%prog')
     optparser.add_option(
         usage='\n\t%prog [options] -- program [args] ...',
         version='%%prog')
     optparser.add_option(
-        '--build', metavar='PATH',
-        type='string', dest='build', default='.',
-        help='path to apitrace build [default=%default]')
+        '-B', '--build', metavar='PATH',
+        type='string', dest='build', default=None,
+        help='path to apitrace build')
     optparser.add_option(
     optparser.add_option(
-        '--cwd', metavar='PATH',
-        type='string', dest='cwd', default='.',
-        help='change directory [default=%default]')
+        '-C', '--directory', metavar='PATH',
+        type='string', dest='cwd', default=None,
+        help='change to directory')
     optparser.add_option(
     optparser.add_option(
-        '--results', metavar='PATH',
+        '-R', '--results', metavar='PATH',
         type='string', dest='results', default='results',
         help='results directory [default=%default]')
 
         type='string', dest='results', default='results',
         help='results directory [default=%default]')
 
diff --git a/testsuite.py b/testsuite.py
new file mode 100755 (executable)
index 0000000..c3ad2b1
--- /dev/null
@@ -0,0 +1,125 @@
+#!/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.
+#
+##########################################################################/
+
+
+import fnmatch
+import optparse
+import os.path
+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)
+
+
+def parse_spec(filename):
+    testlist = []
+    for line in open(filename, 'rt'):
+        if line.lstrip().startswith('#') or not line.strip():
+            # comment / empty
+            continue
+        fields = line.split()
+
+        name = fields.pop(0)
+        cwd = fields.pop(0)
+        args = fields
+
+        if cwd:
+            if options.cwd is not None:
+                cwd = os.path.join(options.cwd, cwd)
+            if not os.path.dirname(args[0]):
+                args[0] = os.path.join('.', args[0])
+        else:
+            cwd = None
+
+        test = TestCase(
+            name = name,
+            args = args,
+            cwd = cwd,
+            build = options.build,
+            results = options.results,
+        )
+
+        testlist.append(test)
+    return testlist
+
+
+def main():
+    global options
+
+    # Parse command line options
+    optparser = optparse.OptionParser(
+        usage='\n\t%prog [options] testspec [glob] ...',
+        version='%%prog')
+    optparser.add_option(
+        '-B', '--build', metavar='PATH',
+        type='string', dest='build', default=None,
+        help='path to apitrace build')
+    optparser.add_option(
+        '-C', '--directory', metavar='PATH',
+        type='string', dest='cwd', default=None,
+        help='change to directory')
+    optparser.add_option(
+        '-R', '--results', metavar='PATH',
+        type='string', dest='results', default='results',
+        help='results directory [default=%default]')
+
+    (options, args) = optparser.parse_args(sys.argv[1:])
+    if not args:
+        optparser.error('a test spec must be specified')
+
+    spec = args.pop(0)
+    testlist = parse_spec(spec)
+
+    if args:
+        new_testlist = []
+        for test in testlist:
+            for pattern in args:
+                if fnmatch.fnmatchcase(test.name, pattern):
+                    new_testlist.append(test)
+        testlist = new_testlist
+
+    report = Report(options.results)
+    for test in testlist:
+        test.run(report)
+
+
+if __name__ == '__main__':
+    main()