Age | Commit message (Collapse) | Author | Files | Lines |
|
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/piglit/merge_requests/223>
|
|
The previous patch (5087aa3f1020d0 "cmake: create Win10 manifest files
for particular executables") didn't copy the manifest files when doing
'make install'.
This fixes that. It requires CMake 3.0 or later. Thanks to Brad King
for helping out!
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
|
|
On Windows10 (and possibly older versions), UAC (User Account Control)
intervenes when starting an executables with "patch", "update" or "setup"
in their name. This requires the user to approve execution by clicking
in a dialog window (and even then, causes test failures). With Cygwin,
you simply get "Permission Denied".
Currently, there are four Piglit tests which need this special treatment:
bin/arb_compute_shader-zero-dispatch-size
bin/arb_tessellation_shader-invalid-patch-vertices-range
bin/glsl-uniform-update
bin/mipmap-setup
A work-around is to create a manifest file for each effected executable.
This patch creates a <foo>.exe.manifest file if "foo" contains any of
the above strings. There's no effect on non-Windows platforms.
Note: this solution uses the cmake file(GENERATE ...) function. I think
add_custom_command() is probably the proper approach, but I've been
unsuccessful in getting that to work.
Reviewed-by: Charmaine Lee <charmainel@vmware.com>
|
|
Six is a module that provides a clean, standardized interface for
handling python2 and python3 from the same code base. This adds a
requirement on six as a build-time dependency, the plan is to use it
only for python generators (those called during build time)
While it certainly is possible to reimplement much of what six does
scratch and not add another python dependency, I think it's better to
just use six. For one thing a large number of python modules already
depend on six, so the chances are good that most people already have it
installed. Second, it's the de facto standard for supporting complex
code bases in 2 and 3, so it's familiar and many of the corner cases
have already been addressed.
This adds the necessary cmake boilerplate to ensure that six is
available. At this time I don't know of a specific version being
required, but I am currently using 1.9.0
v2: - update README with six dependency (Jordan)
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
|
|
This patch adds 3 files, PythonModule.cmake, FindPythonMako.cmake and
FindPythonNumpy.cmake.
PythonModule provides a simple function for running python and parsing
the version strings, each FindPython*.cmake then just calls that
function, and then calls the find_package_handle_standard_args macro for
simple, standard finding. This is much more in line with how the core
cmake modules work, and makes is trivial to add additional python
modules with all of the standard cmake awesomeness like version
checking.
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
|
|
This removes a bunch of code that we rolled for finding python
interpreters, and uses the cmake builtins.
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
|
|
This patch fixes build regression on OpenBSD introduced with commit
4efb025fcac0b37d04ab759ab15055f27cea94f8 'libpiglit: Set CMAKE SOVERSION
for internal libraries to "0"'.
Linking CXX shared library ../../../../lib/libpiglitutil_gl.so
/usr/bin/ld: cannot find -llibpiglitutil.so.0
collect2: ld returned 1 exit status
target_api/gl/tests/util/CMakeFiles/piglitutil_gl.dir/build.make:515: recipe for target
'lib/libpiglitutil_gl.so.0' failed
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84969
Signed-off-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
|
|
When packaging for piglit for debian, I see this type of message:
dpkg-shlibdeps: warning: Can't extract name and version from library name libpiglitutil.so
It it repeated several times for each piglit executable causing a
significant delay in the build time. Setting a soname version for
these internal libraries causes this message to go away.
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
|
|
Tom reported that Mako 0.7 fails with a nasty Python backtrace, but Mako
0.7.3 works. I assume Piglit hits a bug that was fixed between 0.7 and
0.7.3.
Reported-by: Tom Stellard <tom@stellard.net>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
|
|
Piglit began requiring Mako 0.7 as of commit ac1f382 "dispatch:
Generate piglit-dispatch from Khronos XML".
Piglit has required Mako for a long time, and CMake did check for Mako.
But CMake didn't check the version. This patch fixes CMake to require
Mako >= 0.7 and to provide the below hint on failure:
Hint: Try installing Mako with `pip install --user --upgrade Mako`
Reported-by: Tom Stellard <thomas.stellard@amd.com>
Reviewed-by: Dylan Baker <baker.dylan.c@gmail.com>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
|
|
This patch removes the files "piglit-util-gl*-enum.c" and replaces them
with a single file "piglit-util-gl-enum-gen.c" generated from the
Khronos XML.
The two functions now generated are:
piglit_get_gl_enum_name(GLenum param)
piglit_get_prim_name(GLenum prim)
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
|
|
Piglit no longer uses the directory because it now generates
piglit-dispatch from the Khronos XML.
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
|
|
Khronos now generates its headers from XML and no longer maintains the
old, crufty *.spec files. Piglit should do the same. Otherwise,
piglit-dispatch won't be able to pick up new extension functions.
As a really really big bonus, after Piglit starts generating its GL
dispatch code from gl.xml, it will be a small step to start generating
EGL and GLX dispatch from egl.xml and glx.xml.
This patch imports 'gl.xml' into a new toplevel "registry" directory, to
follow the precedent of libepoxy.
This patch follows the precedent of libepoxy by importing "gl.xml" into
a new toplevel "registry" directory.
I did *not* try to redesign piglit-dispatch in this patch. To the
contrary, I attempted to keep the newly generated dispatch code to be as
similar as possible as the old generated code. Despite wanting to clean
up piglit-dispatch's design, I refrained because "a patch should do one
thing, and do it well".
I strove to keep separate concerns in separate files. File
"registry/gl.py" parses "registry/gl.xml". File
"tests/util/gen_dispatch.py" generates code from the that parsed result.
This decision kept gen_dispatch.py small and focused.
I hope everyone finds the rewritten gen_dispatch.py more maintainable
and easy to read.
The generated code has changed as following:
- It now contains the GLES1 API, because gl.xml contains information
on all OpenGL APIs.
- The comment block for each function alias set now contains more
information. For each function in the set, it now lists the
complete set of providers.
For example:
/* glActiveTexture (GL_VERSION_1_3) (GL_VERSION_ES_CM_1_0) (GL_ES_VERSION_2_0) */
/* glActiveTextureARB (GL_ARB_multitexture) */
extern PFNGLACTIVETEXTUREPROC piglit_dispatch_glActiveTexture;
#define glActiveTexture piglit_dispatch_glActiveTexture
#define glActiveTextureARB piglit_dispatch_glActiveTexture
- Enums are sorted by group then by value. Old dispatch sorted only by
value.
For example:
/* Enum Group MapBufferUsageMask */
#define GL_MAP_READ_BIT 0x0001
#define GL_MAP_READ_BIT_EXT 0x0001
#define GL_MAP_WRITE_BIT 0x0002
#define GL_MAP_WRITE_BIT_EXT 0x0002
...
Tested for regressions with:
piglit run -p x11_egl -x glx -x glean
Mesa 10.2.1
Intel Ivybridge
Fedora 20
v3, for Dylan:
- Replace ElementTree with cElementTree, for speed.
- Each method $foo in KeyedOrderedSet that returns
a generator, rename it to iter${foo} to follow Python2 (not 3)
naming conventions.
- Python 2.6 lacks OrderedDict, so don't use it.
- Remove unused import 'dedent'.
- Python 2.6 does not recognize the syntax for set literals, so
replace each set literal with a list literal or generator literal.
- Replace sys.stderr.write with print(file=sys.stderr).
- Remove hand-coded OrderedKeyedSet.copy and instead use copy module.
- Prefer the 'lxml' module (it uses libxml2) over Python's builtin 'xml' module.
- Replace methods ``def foo(x, y):`` with ``def foo(self, other):``.
- Replace lists with generators in methods Command.c_*_param_list.
- PEP8: Separate all toplevel items with 2 newlines.
- PEP8: Fix minor whitespace issues.
- PEP8: Replace some ``== None`` with ``is None``.
- Replace None-check for --out-dir with add_argument(..., required=True)
- Remove 'prog' assignment when calling ArgumentParser(prog=PROG_NAME).
Instead, use default value
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
|
|
Rename the files "generated_dispatch.[ch]" to
"piglit-dispatch-gen.[ch]". They now follow the same filename
convention ("piglit-*.[ch]") used by most other files in tests/util.
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
|
|
Should fix https://bugs.freedesktop.org/show_bug.cgi?id=79745
Tested-by: Vinson Lee <vlee@freedesktop.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
|
|
Install paths updated:
* $PREFIX/share/doc => $PREFIX/share/doc/piglit
* $PREFIX/lib => $PREFIX/lib/piglit/lib
* $PREFIX/bin => $PREFIX/lib/piglit/bin
* etc...
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Dylan Baker <baker.dylan.c@gmail.com>
|
|
Weirdly, the gl3ext.h has no entries currently, and to access
extensions from GLES3 you need to include this GLES2 header.
We now have code-generated piglit-dispatch support for all of desktop,
GLES2, and GLES3.
v2: Express the corename substitution as a regexp. (suggestion by Paul)
Reviewed-by: Paul Berry <stereotype441@gmail.com>
|
|
This gets us piglit-dispatch support for all the core functions of
GLES2/3.
v2: Improve the python-style-ness of the argument parsing code (thanks
Paul!)
Reviewed-by: Paul Berry <stereotype441@gmail.com>
|
|
There are three differences between the two (as verified by sort, sed,
uniq, and diff):
- enum.spec includes GLES extension enums (since it's used for
maintaining uniqueness of enums in the registry), which we want to
include for cross-API compatibility.
- enum.spec includes some entries for known GL versions and GL extensions.
- enumext.spec has a few more synonyms for enums (since it's the
file used for generating the official glext.h for desktop).
This change only introduces new #define lines to generated-dispatch.h.
v2: Make the statement about "only introduces new #define lines"
actually true by continuing to emit based on the categories we
collected during parsing, except with them defined to '1' instead
of '', to match actual glext definitions and what gets
autogenerated from enum.ext.
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
|
|
Some OpenCL lib's name is not libOpenCL.so.
Some thing like libCL.so, libcl.so may exist,
and in these cases the check failed.
Add the names to fix this problem.
Signed-off-by: Junyan He <junyan.he@linux.intel.com>
|
|
It would be nice to eventually get dynamic link libraries working with
WGL too, but for now ensure that we always do static as intended.
This might fix fdo bug 60352.
|
|
It doesn't make much sense to package piglit or install on machines, due
to the frequency piglit tests are added/changed.
However, binary packages are still useful for distributed testing where
the binaries are built on one machine, and then passed to (sometimes
other teams) for the actual testing.
This patch allows one to conveniently generate such packages, simply by
doing
make package
Then one can run piglit by unpacking the package elsewhere, set the
PIGLIT_SOURCE_DIR and LD_LIBRARY_PATH accordingly, and run piglit scripts
as usual.
Reviewed-by: Brian Paul <brianp@vmware.com>
|
|
Add "gles3" as a new api in PIGLIT_TOP/cmake/target_api. Now, you can
build GLES3 tests and libraries by placing the build rules in files named
CMakeLists.gles3.txt.
I dislike the CMake hackery of havining multiple builds for each target
api. But, because GLES2 and GLES3 use different headers (gl2.h vs
gl3.h), until piglit-dispatch gains support for GLES the most sensible way
to add GLES3 support to piglit is to continue the tradition of adding
a new target api into PIGLIT_TOP/cmake/target_api.
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
|
|
Tested on Mac OS 10.7
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
|
|
The GL tests were compiled unconditionally.
This breaks on systems that dont't have a GL library.
Signed-off-by: Adrian Marius Negreanu <adrian.m.negreanu@intel.com>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
|
|
- Stop building old framework sources, piglit-framework-{fbo,glut}.c.
- Stop building libglut_waffle.
- Wire up piglit_gl_test_run() to use the new framework.
Reviewed-and-tested-by: Jordan Justen <jordan.l.justen@intel.com>
Tested-by: Paul Berry <stereotype441@gmail.com>
Acked-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
|
|
Some cmake options and features macros had form USE_${feature}, others
BUILD_${category}_TESTS. This patch consistently prefixes all such options
and macros with PIGLIT.
Piglit, be a good code citizen. Namespace your variables.
This patch was created with
find . -type f | xargs sed -i \
-e 's/\(^\|[^_]\)\(USE_\(GLX\|GLUT\|WAFFLE\|OPENGL\|OPENGL_ES1\|OPENGL_ES2\)\)\($\|[^_]\)/\1PIGLIT_\2\4/g' \
-e 's/\(^\|[^_]\)\(BUILD_\(CL\|GLX\|GLES1\|GLES2\)_TESTS\)\($\|[^_]\)/\1PIGLIT_\2\4/g' \
Reviewed-and-tested-by: Jordan Justen <jordan.l.justen@intel.com>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Paul Berry <stereotype441@gmail.com>
Acked-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
|
|
Add BUILD_CL_TESTS option to cmake configuration and build OpenCL
utilities and framework to library piglitutil_cl.
Signed-off-by: Blaž Tomažič <blaz.tomazic@gmail.com>
|
|
Now that Piglit uses pkgconfig to find Waffle, this module is no longer
used.
Signed-off-by: Chad Versace <chad@chad.versace.us>
|
|
Incremental builds take long time linking tests if utilities are
modified. The link time can be eliminate if libraries are made shared.
Shared libraries need to specify symbols that are excepted to be
declared in executeable as weak to allow linking without symbols that
aren't used in runtime.
Windows has limitation that shared library can't have programs main
function that forces windows to use static libraries.
Signed-off-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Reviewed-by: Chad Versace <chad.versace@linux.intel.com>
Acked-by: Kenneth Graunke <kenneth@whitecape.org>
|
|
For GL tests (those built by CMakeLists.gl.txt), if USE_WAFFLE is enabled
then freeglut is replaced with glut_waffle.
For GLES1 and GLES2 tests, glut_waffle is now required.
Reviewed-by: Pauli Nieminen <pauli.nieminen@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
|
|
This enables Piglit to call `find_package(Waffle REQUIRED)`.
Reviewed-by: Pauli Nieminen <pauli.nieminen@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Signed-off-by: Chad Versace <chad@chad.versace.us>
|
|
Nearly all CMakeLists.gl.txt contained the following:
include_directories(${GLUT_INCLUDE_DIR})
link_libraries(${GLUT_glut_LIBRARY})
This patch relocates them to cmake/target_api/gl/CMakeLists.txt.
Reviewed-by: Pauli Nieminen <pauli.nieminen@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
|
|
Now that there are options to control building the GLES1 and GLES2 tests,
there is no need for the 'if' guard in these CMakeLists.
Remove the unneeded 'if' guards, and hence a level of indentation.
Reviewed-by: Pauli Nieminen <pauli.nieminen@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
|
|
Default value for each is OFF.
Before this patch, Piglit automatically built the GLES1 tests if libEGL
and libGLESv1_CM were found. Ditto for GLES2 and libGLESv2. If these
libraries were installed on the system, it was impossible to disable the
tests.
This patch adds options to explicitly enable the tests.
v2: Fix typo GLES1 -> GLES2.
Reviewed-by: Pauli Nieminen <pauli.nieminen@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
|
|
Alter the wrapper functions `piglit_add_executable` and
`piglit_add_library` to add to each object file a dependency on
piglit_dispatch's generated files. This requires that a top-level custom
target be created, `piglit_dispatch_gen`, to track that dependency.
The result is that updating any files in `piglit_dispatch_gen_inputs` (for
example, gl_API.xml) triggers a recompile of all objects.
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
|
|
For now, `piglit_add_executable` is a trivial wrapper around
`add_executable`. Ditto for `piglit_add_library`.
A subsequent commit will leverage the wrappers to add to each object file
an explicit dependency on the header files generated by piglit_dispatch.
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
|
|
Currently there is only one utility function, piglit_include_target_api.
However, subsequent commits will add several more.
I'm choosing to define all the utility functions in their own file,
piglit_util.cmake, in order to keep things organized and the top
CMakeLists uncluttered.
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
|
|
This patch contains the code generation scripts that convert the files
gl.spec, gl.tm, and enumext.spec into C code, as well as the CMake
directives to run the scripts.
Code generation occurs in two phases: first the script
glapi/parse_glspec.py converts the .spec and .tm files into an
intermediate JSON format, which is stored in glapi/glapi.json. Then,
the script tests/util/gen_dispatch.py converts the JSON file into two
files, tests/util/generated_dispatch.c and
tests/util/generated_dispatch.h.
There are two motivations for breaking code generation into two phases:
(1) there are other code generation tasks we may add in the future
(e.g. generating the tests/util/piglit-util-enum.c file), and it would
be nice not to have to rewrite any parsing code when we do so. (2) if
the GL consortium ever decides to change the format of gl.spec, gl.tm,
and enumext.spec, then we only have to change parse_glspec.py.
These code generation scripts can be run by invoking "make
piglit_dispatch_gen" from the toplevel source directory.
v2: Add clarifying comments, remove a bogus "print" statement, and
raise an exception if an unrecognized multiplicity is encountered.
Also, handle "reference" multiplicity.
v3: Add APIENTRY to stub functions. Rename "near" and "far" to avoid
problems on MSVC. Get rid of "__" in function names. Rename
initialize_dispatch_pointers => reset_dispatch_pointers. Add
gl_10x_version parameter to get_core_proc(). Output generated code
relative to CMAKE_BINARY_DIR so that it won't pollute source
directories when building out of tree. Add .gitignore so that
generated files are ignored when building in tree. Add GL_VERSION_*
defines.
|
|
This commit adds the infrastructure for writing GLES1 specific tests.
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
|
|
Signed-off-by: Chad Versace <chad.versace@intel.com>
|
|
|
|
Signed-off-by: Chad Versace <chad.versace@intel.com>
|
|
piglit_include_target_api() facilitates building Piglit with multiple GL
targets (for example, GL and GLES2).
Note: This belongs to a series that add GLES2 support to Piglit.
Signed-off-by: Chad Versace <chad.versace@intel.com>
|
|
Add two new CMakeLists, /cmake/target_api/{gl,gles2}/CMakeLists.txt, each
of which builds Piglit with its respective API. (Of course,
gles2/CMakeLists.txt adds no targets because Piglit does not yet support
building with GLES2.)
The toplevel CMakeLists no longer adds subdirectory /tests; that is now
the responsiblity of the API-specific CMakeLists.
Note: This belongs to a series that adds GLES2 support to Piglit.
Signed-off-by: Chad Versace <chad.versace@intel.com>
|