[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