Age | Commit message (Collapse) | Author | Files | Lines |
|
Test all image atomic built-in functions without using their return
value to make sure that they aren't optimized out by the compiler
accidentally and because some implementations may use different
hardware instructions for the same atomic operation depending on
whether the return value of the built-in is used or not.
|
|
Test the image unit and image uniform binding commands and then check
that the state query APIs return the expected values for all bound
image units.
|
|
Test the relative ordering of memory transactions before and after a
call to the memoryBarrier() GLSL built-in.
|
|
Test that image built-in functions do what they are supposed to do by
comparing their results with a simulation run on the CPU with similar
inputs. The test is repeated for all built-ins, shader stages,
formats and texture targets either sequentially or combinatorially
depending on the --quick flag.
|
|
Test if the implementation is incorrectly assuming that different
image uniforms point to disjoint locations in memory, which could lead
to incorrect code transformations and break valid GLSL programs.
|
|
Test that no changes are observed when an optional image qualifier is
omitted (e.g. access qualifiers may be omitted, format qualifiers may
be omitted when the "writeonly" qualifier is present), and test
several combinations of binding access modes and access qualifiers.
|
|
|
|
Test that images work as expected up to the maximum texture dimensions
reported by the implementation for each target. The test is carried
out one dimension at a time to avoid creating huge textures (a 16Kx16K
RGBA32F texture is already 4GB), but this is not always possible
because e.g. both dimensions of a cubemap necessarily have to be
equal. There is a hard-coded limit for the total texture size (which
is especially stringent in quick mode) to make sure that the
implementation doesn't make us do anything stupid like creating a 32 GB
cubemap array texture.
|
|
Test that the limits of supported image units (GL_MAX_IMAGE_UNITS),
per-shader image uniforms (GL_MAX_*_IMAGE_UNIFORMS), and combined
image uniforms (GL_MAX_COMBINED_IMAGE_UNIFORMS) are true by setting up
a GL pipeline that reaches some of the limits and checking that it
renders as expected.
v2: Don't assume that the implementation supports images on the
vertex/tesselation/geometry shader.
|
|
Test that image loads and stores land in the correct mipmap level of
the texture when a level other than the first is bound to an image
unit.
|
|
Test binding of individual layers from a layered texture and the
simultaneous binding of all layers (layered binding). For textures
targets that don't have multiple layers we just test that the layered
and unlayered binding modes have no effect as required by the spec.
|
|
Test a number of cases like reading or writing outside the limits of
the image that the spec defines as being invalid either return zero or
have no effect depending on the specific built-in. In addition test
that other cases that according to the spec cause undefined results
don't lead to program termination.
|
|
Test that indexing of image arrays using dynamically uniform
expressions works as expected.
v2: Add support for shader stages other than fragment.
|
|
Add tests for the glMemoryBarrier() API which provides a way to
serialize shader memory transactions issued by previous drawing
commands with respect to subsequent GL commands.
v2: Skip indirect draw and transform feedback tests when the
extensions they rely on are not supported.
|
|
The extension defines an input layout qualifier that allows the
application to force early fragment tests for a specified shader
program. This has several consequences that are verified by this
test, including that the fragment shader is guaranteed not to be
executed if the depth test fails, that the depth value computed by the
fragment shader is ignored, and that fragments discarded during or
after fragment shader execution are counted by occlusion queries.
|
|
Test that image stores and atomics have no effect when called from
fragment shader invocations that aren't covered by a primitive or have
been discarded.
|
|
Test the cache coherency of images declared as "coherent" or
"volatile" when accessed from different combinations of dependent
shader stages.
|
|
The ARB_shader_image_load_store extension allows the reinterpretation
of the binary contents of an existing image as an image of a different
compatible format. The resulting values should be predictable and are
defined in terms of the usual GL pixel transfer operations.
v2: Actually bind the image with the bitcasted format.
|
|
Import a number of tests intended to check if the read-modify-write
built-in functions defined by the spec are carried out atomically.
v2: Disable the locking imageAtomicExchange test and use a lockless
algorithm instead to test the built-in. Avoids GPU hang on Intel
hardware.
|
|
to the build system.
|
|
Define helper functions that are able to run a piece of GLSL code on
an arbitrary shader stage (as of now VS, TCS, TES, GS, FS and CS are
supported) for a given execution size. This makes every shader stage
expose a consistent interface that looks like a sort of primitive
two-dimensional compute grid, with the peculiarity that you can run
several stages at the same time and chain the results of one stage
into the arguments of the next.
This is useful in cases where one needs to run the exact same test on
a number of shader stages and using code generators or duplicating
code would be inconvenient.
v2: Fix crash when generate_program() is called with unsupported
shader stage arguments.
|
|
Define helper data structures and functions to query several kinds of
information for any supported image format, target or shader stage,
like the matching pixel transfer type and format for a given image
format, GLSL type information, error tolerance, maximum supported
dimensions and samples for a given image dimensionality, number of
supported image uniforms for a given shader stage, etc.
This also defines the image_info data structure that aggregates some
combination of image target, format and dimensions in a single object
to avoid having to repeat the same three arguments constantly when
working with images.
v2: Encode per-image base datatype information in a struct instead of
having separate switch-case statements spread over several query
functions. Add comment explaining the reason why there are no
specific semantics attached to image dimensions. (Ian)
|
|
Define a variant of piglit_compile_shader_text() that doesn't call
piglit_report_result() on failure killing the program, which is quite
annoying for tests that expect a compilation to fail and for tests
that are structured in a number of subtests, because a single sub-test
failing to compile a shader will prevent the remaining tests from
running.
I guess this would ideally be the default behavior of
piglit_compile_shader_text(), but with >300 callers in tree it seems
rather difficult to change at this stage.
|
|
Ken pointed out cucul_flop in the original libcaca patch, but going
back to 2008-09-27, r2821,
http://caca.zoy.org/browser/libcaca/trunk/caca/caca.h?rev=2821#L251
caca_flop seems to be preferred.
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
|
|
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
|
|
Test currently fails because INVALID_OPERATION generated by
program_pipeline_check_status is not read and piglit_check_gl_error
is called for another call later. This change makes the test pass as
expected.
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
|
|
This script manipulates the python path to get at some modules, because
of this pylint gives an error (as opposed to a warning) about not being
able to import that module. This patch silences that error.
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
|
|
Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>
|
|
gen_dispatch.py contains a function used to sort Enums, and uses cmp.
This patch moves that logic into the Enum class using rich comparison
methods instead.
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
|
|
PEP8 specifies that imports should be sorted into groups, separated by a
blank line. The first should by core modules, the second should be
system wide modules, and the third local modules.
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
|
|
spotted by pylint
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
|
|
In python 2 it is expected that errors descend from Exception, but there
is no requirement that they do so, in python 3 it is required. This also
is problematic because it makes the exception class an old style class,
which has all the problems associated with old style classes.
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
|
|
This was spotted by pylint.
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
|
|
In C assert is a function and requires parens, in python it is a
keyword, and doesn't require parens. This might not be that big of a
deal, but if you put a comma in those parens then then argument becomes
a tuple, which will not do what one intends.
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
|
|
In the days of yore python had a single magic method for comparison,
__cmp__, which was called with the cmp() function. __cmp__ would return
a negative number for less than, 0 for equal, and a positive for greater
than. Then in python 2.1 this single method was replace by the "rich
comparison methods", __lt__, __gt__, __le__, __ge__, __eq__, and __ne__.
These methods provide a more fine grained way to compare objects.
Finally, in 2.7 a class decorator was added (functools.total_ordering)
which allows one to implement __eq__ and either __lt__ or __gt__, and it
fills in the rest.
So, why bother? Well, in python 2.1 cmp was deprecated, but in 3.0 it
was removed. As we continue to look toward a future that includes
python 3 not having features that bind us to python2.ancient is just a
good plan.
Thanks Chad for looking at this and realizing why my logic was failing.
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
|
|
The Command class defines self.requirements, but not
self.__requirements, but the vendor_namespace property checks
self.__requirements.
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
|
|
Spotted by pylint
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
|
|
Currently the comments are not sorted, and therefor not deterministic,
which makes it very difficult to diff the output when trying to make
changes and ensure no changes.
With this change the order is deterministic, which solves the problem of
using diff on the output.
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
|
|
Allow tests to be enumerated but not run if the environment check fails.
This allows the piglit-print-commands utility to continue to work
correctly, but prevents the tests from being run if the current
environment will cause them to fail. This also helps prevent appending
incorrect results to resumed test runs.
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
Reviewed-by: Dylan Baker <baker.dylan.c@gmail.com>
|
|
Check for ValueError rather than JSONDecodeError because JSONDecodeError
is only available when using the simplejson module.
v2: just check for ValueError since it is a subclass of JSONDecodeError
(Dylan Baker)
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
|
|
To avoid a compile failure on NVIDIA. The mix function parameter is
hiding the built-in mix() function. The point of this test is not
to exercise compile-time name resolution.
Reviewed-by: <ian.d.romanick@intel.com>
|
|
AFAICT, the GL and GLSL specs don't say anything about the significance
of the order in which shaders are attached to a program object. For
example, if there's two vertex shader A and B, it shouldn't matter if
they're attached in order A,B or B,A.
This pair of shader tests exercises that. Both pass with Mesa but
the "b-a" case fails with NVIDIA.
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
|
|
v2: - fix cpu.py message (Emil)
- correct typo (deqp-gles3.py -> deqp_gles3.py)
v3: - correct second occurrence typo (Emil)
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com> (v1)
|
|
v2: - Add this patch after comments (Emil)
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
|
|
Updates README and the help message to be clear about using multiple
test profiles.
v2: - Fix spelling error (Emil)
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com> (v1)
|
|
Since groups cannot be '.' (ie: 'foo/./bar' is not valid),
grouptools.from_path should not return '.', it should return ''
Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
|
|
Google have already added a subset of dEQP into Android CTS test,
and we believe this part of dEQP have higher priority than the rest
of dEQP test cases.
The case list is stored at some xml files. Such as:
com.drawelements.deqp.gles3.xml.
It's git repo lives in the Android tree at
[https://android.googlesource.com/platform/external/ \
deqp/+/master/android/cts/com.drawelements.deqp.gles3.xml]
This patch is based on Chad's patch(Add test profile for external
dEQP-GLES3 tests), and add an option to run the subset of dEQP-GLES3.
The only differnce for the running method is: you need to set the
environment variable PIGLIT_DEQP_MUSTPASS or the piglit.conf
option deqp-gles3.mustpasslist,then it will run the subset of dEQP
follow the test case list. If not set, it will still run the whole
dEQP.
Tested on Intel HSW. There are 45866 test cases for the whole dEQP
and 37354 test cases for the subset of dEQP using Android CTS test
case list.
V2:
1.Update the link of get test case list file.
2.Using xml.etree.cElementTree module instead of re module.
3.Fix some Piglit style issue
V3:
1.Update the output issue.
2.Fix some Piglit style issue.
V4:
1.Fix some Piglit style issue.
V5:
1.Fix some Piglit style issue.
v6 (Dylan):
- Remove trailing whitespace
Signed-off-by: Wang Shuo <shuo.wang@intel.com>
Reviewed-by: Dylan Baker <dylanx.c.baker@intel.com>
|
|
Signed-off-by: Meng Mengmeng <mengmeng.meng@intel.com>
Reviewed-by: Jan Vesely <jan.vesely@rutgers.edu>
|
|
The specs say 2.5 ulp, but we only take integer values
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
|
|
v2: Fix tolerance
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
|