1. 08 Mar, 2012 1 commit
  2. 03 Mar, 2012 4 commits
  3. 02 Mar, 2012 2 commits
    • Kenneth Graunke's avatar
      Add the ability to resume an interrupted test run where it left off. · e627eb88
      Kenneth Graunke authored
      GPUs like to hang, especially when barraged with lots of mean Piglit
      tests.  Usually this results in the poor developer having to figure out
      what test hung, blacklist it via -x, and start the whole test run over.
      This can waste a huge amount of time, especially when many tests hang.
      
      This patch adds the ability to resume a Piglit run where you left off.
      
      The workflow is:
      $ piglit-run.py -t foo tests/quick.tests results/foobar-1
      <interrupt the test run somehow>
      $ piglit-run.py -r -x bad-test results/foobar-1
      
      To accomplish this, piglit-run.py now stores the test profile
      (quick.tests) and -t/-x options in the JSON results file so it can tell
      what you were originally running.  When run with the --resume option, it
      re-reads the results file to obtain this information (repairing broken
      JSON if necessary), rewrites the existing results, and runs any
      remaining tests.
      
      WARNING:
      Results files produced after this commit are incompatible with older
      piglit-summary-html.py (due to the extra "option" section.)
      Signed-off-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
      Reviewed-by: Paul Berry's avatarPaul Berry <stereotype441@gmail.com>
      e627eb88
    • Kenneth Graunke's avatar
      Move writing of JSON 'tests' dictionary section out of TestProfile.run. · 506ab469
      Kenneth Graunke authored
      When resuming an interrupted piglit run, we'll want to output both
      existing and new results into the same 'tests' section.  Since
      TestProfile.run only handles newly run tests, it can't open/close the
      JSON dictionary.
      
      So, move it to the caller in piglit-run.py.
      Signed-off-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
      Reviewed-by: Paul Berry's avatarPaul Berry <stereotype441@gmail.com>
      506ab469
  4. 29 Feb, 2012 7 commits
  5. 28 Feb, 2012 1 commit
  6. 25 Feb, 2012 2 commits
  7. 24 Feb, 2012 3 commits
  8. 23 Feb, 2012 1 commit
  9. 21 Feb, 2012 2 commits
  10. 20 Feb, 2012 2 commits
  11. 17 Feb, 2012 1 commit
  12. 16 Feb, 2012 1 commit
    • Brian Paul's avatar
      texture_integer-api-teximage: fix / add error checks · 19f34bf1
      Brian Paul authored
      The previous glTexSubImage2D() test could generate either GL_INVALID_ENUM
      or INVALID_OPERATION depending on the order in which glTexSubImage did its
      error checks of this call.
      
      Replace that call with new calls that can only generate invalid operation
      or invalid enum.
      
      Plus, add a test for glCopyTexImage2D().
      Reviewed-by: Eric Anholt's avatarEric Anholt <eric@anholt.net>
      19f34bf1
  13. 15 Feb, 2012 3 commits
  14. 14 Feb, 2012 1 commit
  15. 13 Feb, 2012 7 commits
    • Paul Berry's avatar
      Modify shader_runner to skip tests with unsigned uniforms when GL<3.0 · 7f92a5af
      Paul Berry authored
      On implementations that support GLSL version 1.30 but not GL version
      3.0 (for example Mesa, when built without floating point texture
      support), it is impossible to test unsigned uniforms, because the
      Uniform*ui{v} functions are not available.  So any shader_runner tests
      that use unsigned uniforms should be skipped.
      
      Since it's rare for implementations to support GLSL version 1.30 but
      not GL version 3.0, we don't want to require test writers to remember
      to add "GL>=3.0" to the top of their test scripts.  So instead, this
      patch modifies shader_runner to automatically skip any test that uses
      unsigned uniforms if the GL version is less than 3.0.
      
      Avoids 404 bogus "crash" results in
      spec/glsl-1.30/execution/built-in-functions when testing with a
      version of Mesa that was built without floating point texture support.
      Reviewed-by: Eric Anholt's avatarEric Anholt <eric@anholt.net>
      Reviewed-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
      7f92a5af
    • Kenneth Graunke's avatar
      framework: Remove checking for the pre-JSON piglit file format. · 3241e782
      Kenneth Graunke authored
      It was polite to print a message shortly after the conversion, but at
      this point, it's basically dead code.
      3241e782
    • Kenneth Graunke's avatar
      framework: Move list of ignored errors to core rather than *.tests. · 9455e5a8
      Kenneth Graunke authored
      all.tests includes a series of regular expressions to discard driver
      chatter that Piglit shouldn't consider a warning.  Unfortunately, it
      got copy and pasted to a few more files.
      
      Move it back into one place---in core.  While we're at it, use `map' to
      avoid having to write Test.ignoreErrors.append(re.compile(...)) every
      time.
      Signed-off-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
      9455e5a8
    • Kenneth Graunke's avatar
      framework: Remove Test.sleep and TestProfile.sleep. · 5b23fe7d
      Kenneth Graunke authored
      Because seriously, who wants to sleep between tests?  Under normal
      circumstances, this just pointlessly slows test runs down.  During
      platform bring-up, or when debugging flushing issues, it can be useful,
      but it's just as easy to hack in a sleep(0.2) call yourself.
      5b23fe7d
    • Kenneth Graunke's avatar
      framework: Move test filtering to TestProfile.run instead of Test.doRun. · 25a04c5f
      Kenneth Graunke authored
      It doesn't make much sense for Tests to filter themselves out based on
      global options just before they're about to run; they should be filtered
      out ahead of time.  This avoids scheduling a bunch of useless tests.
      Signed-off-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
      25a04c5f
    • Kenneth Graunke's avatar
      framework: Remove the confusing Environment.run_concurrent flag. · 59164071
      Kenneth Graunke authored
      Test.doRun was serving two purposes:
      1. Queueing up a concurrent test for later execution.
      2. Running a test immediately (in the current thread).
      
      This behavior was controlled by an effectively global parameter,
      Environment.run_concurrent, which could easily be confused with
      Test.runConcurrent (whether the test is safe to run concurrently) and
      Environment.concurrent (whether to use multiple threads/the -c flag).
      
      Split it into two functions for clarity.
      Signed-off-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
      59164071
    • Kenneth Graunke's avatar
      framework: Begin converting TestProfile to a flat dictionary of tests. · 9a6db295
      Kenneth Graunke authored
      In the past, Piglit has stored test profiles as a hierarchy of Test and
      Group objects: TestProfile contained a top-level Group, and each Group
      could contain either Tests or Groups.  To refer to a test, one could do:
      tests['spec']['glsl-1.30']['preprocessor']['compiler']['keywords']['void.frag']
      
      A second way of referring to tests is via their "fully qualified name",
      using slashes to delimit groups.  The above example would be:
      tests['spec/glsl-1.30/preprocessor/compiler/keywords/void.frag']
      
      This fully qualified name is used for regular expression matching
      (piglit-run.py's -t and -x options).  Since the advent of JSON, it's
      also what gets stored in the results file.
      
      Using the Group hierarchy is both complicated and inconvenient:
      1. When running tests, we have to construct the fully qualified
         name in order to write it to the JSON (rather than just having it).
      2. Adding the ability to "resume" a test run by re-reading the JSON
         results file and skipping tests that have already completed would
         require the opposite conversion (qualified name -> hierarchy).
      3. Every Group has to be manually instantiated and added to the parent
         group (rather than just being created as necessary).
      4. The Group class is actually just a dumb wrapper around Python's dict
         class, but with extra inconvenience.
      
      This patch is an incremental step toward dropping the Group hierarchy.
      It converts TestProfile.run() to use a simple dictionary where the keys
      are fully qualified test names and the values are the Test objects.  To
      avoid having to convert all.tests right away, it converts the Group
      hierarchy into this data structure before running.
      Signed-off-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
      9a6db295
  16. 11 Feb, 2012 1 commit
  17. 10 Feb, 2012 1 commit