On Mon, Nov 24, 2014 at 01:19:46PM +0200, Pekka Paalanen wrote: > On Wed, 19 Nov 2014 15:06:22 -0800 > Bryce Harrington <br...@osg.samsung.com> wrote: > > > This also serves as a proof of concept of the screen capture > > functionality and as a demo for snapshot-based rendering verification. > > > > Signed-off-by: Bryce Harrington <br...@osg.samsung.com> > > --- > > Makefile.am | 7 +++++- > > tests/fadein-test.c | 64 > > +++++++++++++++++++++++++++++++++++++++++++++++++++++ > > 2 files changed, 70 insertions(+), 1 deletion(-) > > create mode 100644 tests/fadein-test.c > > > > diff --git a/Makefile.am b/Makefile.am > > index 26dd473..c3dfa10 100644 > > --- a/Makefile.am > > +++ b/Makefile.am > > @@ -852,7 +852,8 @@ weston_tests = \ > > text.weston \ > > presentation.weston \ > > roles.weston \ > > - subsurface.weston > > + subsurface.weston \ > > + fadein.weston > > > > > > AM_TESTS_ENVIRONMENT = \ > > @@ -954,6 +955,10 @@ subsurface_weston_SOURCES = tests/subsurface-test.c > > subsurface_weston_CFLAGS = $(AM_CFLAGS) $(TEST_CLIENT_CFLAGS) > > subsurface_weston_LDADD = libtest-client.la > > > > +fadein_weston_SOURCES = tests/fadein-test.c > > +fadein_weston_CFLAGS = $(AM_CFLAGS) $(TEST_CLIENT_CFLAGS) > > +fadein_weston_LDADD = libtest-client.la > > + > > presentation_weston_SOURCES = tests/presentation-test.c > > nodist_presentation_weston_SOURCES = \ > > protocol/presentation_timing-protocol.c \ > > diff --git a/tests/fadein-test.c b/tests/fadein-test.c > > new file mode 100644 > > index 0000000..a6c284f > > --- /dev/null > > +++ b/tests/fadein-test.c > > @@ -0,0 +1,64 @@ > > +/* > > + * Copyright © 2014 Samsung > > + * > > + * Permission to use, copy, modify, distribute, and sell this software and > > + * its documentation for any purpose is hereby granted without fee, > > provided > > + * that the above copyright notice appear in all copies and that both that > > + * copyright notice and this permission notice appear in supporting > > + * documentation, and that the name of the copyright holders not be used in > > + * advertising or publicity pertaining to distribution of the software > > + * without specific, written prior permission. The copyright holders make > > + * no representations about the suitability of this software for any > > + * purpose. It is provided "as is" without express or implied warranty. > > + * > > + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS > > + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND > > + * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY > > + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER > > + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF > > + * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN > > + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > > + */ > > + > > +#include "config.h" > > + > > +#include <unistd.h> > > +#include <stdio.h> > > + > > +#include "weston-test-client-helper.h" > > + > > +char *server_parameters="--use-pixman --width=320 --height=240"; > > + > > +static char* > > +output_filename(const char* basename) { > > + static const char *path = "./"; > > + char *filename; > > + > > + if (asprintf(&filename, "%s%s", path, basename) < 0) > > + filename = NULL; > > + > > + return filename; > > +} > > + > > +TEST(fadein) > > +{ > > + struct client *client; > > + char basename[32]; > > + char *out_path; > > + int i; > > + > > + client = client_create(100, 100, 100, 100); > > + assert(client); > > + > > + for (i = 0; i < 6; i++) { > > + snprintf(basename, sizeof basename, "fadein-%02d", i); > > + out_path = output_filename(basename); > > + > > + wl_test_record_screenshot(client->test->wl_test, out_path); > > + client_roundtrip(client); > > + free (out_path); > > + > > + usleep(250000); > > + } > > + > > +} > > Hi, > > where is the verification promised in the commit message? ;-) > > I think it is bad to rely on delays/timers. We need something > more deterministic: a protocol to drive the (headless) repaint. > > We probably need the headless repaint to not run on its own, but > strictly when requested by the test client. Additionally, we probably > want to carry a "page flip completion" timestamp in that request, and > have the compositor use the timestamp. That way the test client can > actually drive the in-compositor animations, because it is in control > of the clock and framerate.
Yes, that would definitely be helpful. Can you elaborate on how this should be implemented? > That should make the fade-in test reliable, and it will help with > Presentation testing too. > > The client driven repaint likely needs to be enabled per-test. If a > test attempts to enable it, but the compositor still does not advertise > the support(!) in protocol, the test should skip. This way real > hardware backends can skip these tests automatically, as they cannot > (or not implemented yet) support client driven repaint. > > How would that sound? Sure, although I suspect all tests that care about the rendered output will need to set this. Unless they care only about the initial frame. > As a first proof of concept screenshooting test, I'd prefer something > that doesn't depend on timings at all, so we can add the screenshooting > sooner, and the client driven repaint later if that needs more time. > Which probably calls for an option to skip the fade-in in Weston... oh > but we already have 'startup-animation=none' from weston.ini. Ah, I wondered if there was a switch to disable that, thanks. Only reason I did fadein as the test was because I couldn't get around the timed fade in. ;-) Bryce > Thanks, > pq > _______________________________________________ > wayland-devel mailing list > wayland-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/wayland-devel _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel