[Piglit] [PATCH 00/13] Signal Handler and GLFW framework

Ken Phillis Jr kphillisjr at gmail.com
Thu Oct 31 18:27:03 CET 2013


I have applied the suggestions that Dylan Baker suggested to the following
patches.

*  framework/summary.py: add crashed page.
*  cmake: use PythonInterp package and update version.

I will be submitting the updated patch set in a few days after I get more
feedback on the
other patches.

On Thu, Oct 31, 2013 at 9:47 AM, Kenney Phillis <kphillisjr at gmail.com>wrote:

> I know this is a long patch and contains some features that have already
> been discussed earlier this year. However each feature serves an important
> task.
>
>
>
> Feature 1: Signal Handler
> Signal handlers may not seem like a lot, but on some platforms they are
> a critical task to ensure piglit will function even remotely correctly.
> A primary example of this is the signal handler used for Windows. Without
> this running any remotely long series of tests would require interaction.
> This completely defeats the purpose of having automated testing since it
> would mean that all of the tests will not be ran automatically but instead
> the testing will grind to an halt.
>
> When an appropriate signal is detected, the Signal handler will on it's
> own will attempt to create a backtrace. This is useful since the output
> can easily be used by addr2line to find out where the crash happened in
> the source tree.
>
> Feature 2: Windows Signal Handler
> This is a signal handlered aimed for windows developers only. This feature
> will work on any system running Windows XP or up because of the fact that
> this also implements support for Vectored Exception Handling [1]. This
> signal handler will also generate backtraces on it's own using built
> in functionality that is included with windows. The features with this
> can safely be updated to a minimum of Windows Vista without any major
> changes.
>
>
> Feature 3: New framework - GLFW
> The GLFW[2] framework I implemented exposes OpenGL 3.x support on platforms
> where there is a lack of a c99 compliant compiler ( for example MSVC )
> and should work the same as any other framework. The only limitation
> I can find with this is that the library only supports creating
> double buffered windows. I do not know if this is going to be a problem
> with tests that do not specify this flag.
>
> Note 1: This framework supports OpenGL ES, but I have not enabled nor
> verified that this works.
>
> Note 2: This framework supports internal GLFW builds by simply
> uncompressing
> the source file into the root piglit directory and renaming the folder
> glfw.
> This method should work automatically if the file glfw/CMakeLists.txt is
> found during the configuration phase.
>
> Feature 4: Use PythonInterp to detect python.
> This is an important change for some platforms ( like windows ) because
> many users may not have python added to the path variable
> NOTE: This feature required increasing the minimum cmake version to 2.8.6
> because older versions did not properly honor the minimum version
> argument of find_package. This should make things easier overall because
> it is easy to change the python search to 3.x when the change is needed.
>
> Feature 5: Add a crash listing page to the html summary.
> I know this is not a large feature, but it should still be in place, since
> sometimes as a developer it's important to quickly determine what tests
> have crashed.
>
> TODO List:
> * Add OSX Signal handler - There is some serious overhead with using a
> posix compliant signal handler on OSX and it can lead to problems.
> This means that a mach compatible execution handler is a must.
>
> * Further test the Windows execution handler. I do not know if this
> automatic debug handler will suite windows developers well, but at
> least it is easily possible to identify exactly which line in the
> particular test is the source of the crash and to take this output
> and use it to possibly pinpoint where in the driver the actual crash
> happened.
>
> * Verify that the piglit run framework handles the new result output
> properly. I added a new report string ( crashed ) to assist with the
> signal handlers.
>
> [1] MSDN Magazine ( Sept 2001):
> Under the Hood: New Vectored Exception Handling in Windows XP
> http://msdn.microsoft.com/en-us/magazine/cc301714.aspx
>
> [2] GLFW - An OpenGL Library
> http://www.glfw.org/
>
>
> Kenney Phillis (13):
>   util: add PIGLIT_CRASH to the list of valid results.
>   cmake: link OpenGL and OpenGL ES utility libs to piglitutil.
>   util: Implement signal handler support.
>   piglit-framework-gl: Add piglit signal handler.
>   util: Implement signal handler on windows.
>   cmake: make sure the hiz tests link against piglitutil.
>   piglit-framework: Implement glfw support.
>   piglit-framework: Add support for static glfw usage.
>   tests/glx: Enable signal handler support.
>   tests/egl: add support for signal handler.
>   framework/summary.py: add crashed page.
>   cmake: Relax waffle requirement.
>   cmake: use PythonInterp package and update version.
>
>  .gitignore                                         |    3 +
>  CMakeLists.txt                                     |  127 ++++--
>  framework/summary.py                               |    9 +-
>  tests/egl/egl-create-surface.c                     |    2 +
>  tests/egl/egl-nok-swap-region.c                    |    2 +
>  tests/egl/egl-nok-texture-from-pixmap.c            |    2 +
>  tests/egl/egl-query-surface.c                      |    2 +
>  tests/fbo/CMakeLists.gl.txt                        |    4 +-
>  tests/general/CMakeLists.gl.txt                    |    4 +-
>  tests/glx/glx-close-display.c                      |    3 +
>  tests/glx/glx-copy-sub-buffer.c                    |    2 +
>  tests/glx/glx-destroycontext-1.c                   |    4 +-
>  tests/glx/glx-destroycontext-2.c                   |    2 +
>  tests/glx/glx-dont-care-mask.c                     |    2 +
>  tests/glx/glx-fbconfig-compliance.c                |    2 +
>  tests/glx/glx-fbconfig-sanity.c                    |    2 +
>  tests/glx/glx-fbo-binding.c                        |    2 +
>  tests/glx/glx-make-current-bad-context.c           |    2 +
>  tests/glx/glx-make-current.c                       |    2 +
>  tests/glx/glx-make-glxdrawable-current.c           |    2 +
>  tests/glx/glx-multi-context-ib-1.c                 |    2 +
>  tests/glx/glx-multithread-makecurrent-1.c          |    2 +
>  tests/glx/glx-multithread-makecurrent-2.c          |    2 +
>  tests/glx/glx-multithread-makecurrent-3.c          |    2 +
>  tests/glx/glx-multithread-makecurrent-4.c          |    2 +
>  tests/glx/glx-multithread-shader-compile.c         |    2 +
>  tests/glx/glx-multithread-texture.c                |    2 +
>  tests/glx/glx-multithread.c                        |    2 +
>  tests/glx/glx-pixmap-crosscheck.c                  |    2 +
>  tests/glx/glx-pixmap-life.c                        |    2 +
>  tests/glx/glx-pixmap-multi.c                       |    2 +
>  tests/glx/glx-pixmap13-life.c                      |    2 +
>  tests/glx/glx-query-drawable.c                     |    2 +
>  tests/glx/glx-shader-sharing.c                     |    2 +
>  tests/glx/glx-string-sanity.c                      |    2 +
>  tests/glx/glx-swap-event.c                         |    4 +-
>  tests/glx/glx-swap-exchange.c                      |    2 +
>  tests/glx/glx-swap-pixmap-bad.c                    |    2 +
>  tests/glx/glx-swap-pixmap.c                        |    2 +
>  tests/glx/glx-swap-singlebuffer.c                  |    2 +
>  tests/glx/glx-tfp.c                                |    2 +
>  tests/glx/glx-visuals-depth.c                      |    2 +
>  tests/glx/glx-visuals-stencil.c                    |    2 +
>  tests/glx/glx-window-life.c                        |    2 +
>  tests/hiz/CMakeLists.gl.txt                        |    1 +
>  tests/util/CMakeLists.gl.txt                       |    6 +
>  tests/util/CMakeLists.gles1.txt                    |    1 +
>  tests/util/CMakeLists.gles2.txt                    |    1 +
>  tests/util/CMakeLists.gles3.txt                    |    1 +
>  tests/util/CMakeLists.no_api.txt                   |    4 +
>  tests/util/CMakeLists.txt                          |   21 +
>  tests/util/config.h.in                             |    5 +
>  tests/util/piglit-framework-gl.h                   |   10 +
>  .../util/piglit-framework-gl/piglit_gl_framework.c |    5 +
>  .../piglit-framework-gl/piglit_glfw_framework.c    |  407
> ++++++++++++++++++++
>  .../piglit-framework-gl/piglit_glfw_framework.h    |   29 ++
>  .../piglit-sighandler/piglit-sighandler-none.c     |   37 ++
>  .../piglit-sighandler/piglit-sighandler-posix.c    |  209 ++++++++++
>  .../piglit-sighandler/piglit-sighandler-win32.cpp  |  339 ++++++++++++++++
>  tests/util/piglit-util.c                           |    5 +
>  tests/util/piglit-util.h                           |   15 +-
>  61 files changed, 1282 insertions(+), 44 deletions(-)
>  create mode 100644 tests/util/piglit-framework-gl/piglit_glfw_framework.c
>  create mode 100644 tests/util/piglit-framework-gl/piglit_glfw_framework.h
>  create mode 100644 tests/util/piglit-sighandler/piglit-sighandler-none.c
>  create mode 100644 tests/util/piglit-sighandler/piglit-sighandler-posix.c
>  create mode 100644
> tests/util/piglit-sighandler/piglit-sighandler-win32.cpp
>
> --
> 1.7.9.5
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20131031/0df4acaa/attachment-0001.html>


More information about the Piglit mailing list