summaryrefslogtreecommitdiff
path: root/boilerplate
Commit message (Collapse)AuthorAgeFilesLines
...
* boilerplate: Fix list termination for glXChooseVisualBryce Harrington2015-07-301-2/+2
| | | | | | | | | | | The attribute list is terminated by GLX_NONE (defined as 0x8000), but the man page of 'glXChooseVisual' says it must be terminated with None (0L). Issue found and fix suggested by Massimo. Signed-off-by: Bryce Harrington <bryce@osg.samsung.com> Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=91293
* win32: Add a win32 boilerplate that uses a real windowРуслан Ижбулатов2015-04-131-14/+228
| | | | | | | | | | | | | | | | | | | | | | | | This way it uses the codepath for cairo_win32_surface_create_with_format(), instead of the cairo_win32_surface_create_with_dib(). Without the recording tests (which terminate the testsuite) the testsuite results for win32 are: 284 Passed, 167 Failed [1 crashed, 9 expected], 23 Skipped win32 (rgb24): 1 crashed! win32 (rgb24): 17 error win32 (rgb24): 155 failed win32 (argb32): 1 crashed! win32 (argb32): 17 error win32 (argb32): 68 failed win32-window-color (rgb24): 1 crashed! win32-window-color (rgb24): 17 error win32-window-color (rgb24): 148 failed win32-window-coloralpha (argb32): 1 crashed! win32-window-coloralpha (argb32): 17 error win32-window-coloralpha (argb32): 66 failed Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
* Refactor ARRAY_LENGTH macro definitions in test codeBryce Harrington2014-11-203-3/+5
|
* test: improve selective execution of Cairo tests based on FORMAT optionRavi Nanjundappa2014-08-141-13/+55
| | | | | | | | | | | | | | | | | | This patch improves the patch "test: Selective execution of Cairo tests based on FORMAT option" by extending the usage of FORMAT option even in the case of user not providing TARGETS= option For ex: (1). CAIRO_TESTS="zero-alpha" make test FORMAT=rgba This command runs the zero-alpha test for all the backends with argb32 content format and so on. (2). CAIRO_TESTS="zero-alpha" make test FORMAT=rgba,rgb This command runs the zero-alpha test for all the backends with argb32 and rgb24 content formats. Signed-off-by: Ravi Nanjundappa <nravi.n@samsung.com> Reviewed-by: Bryce Harrington <bryce@osg.samsung.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
* test: Selective execution of Cairo tests based on FORMAT optionRavi Nanjundappa2014-08-141-7/+54
| | | | | | | | | | | | | | | | Added a new command line option FORMAT which can take rgb and/or rgba values which enables the execution of tests only for the given FORMAT For ex: (1). CAIRO_TESTS="zero-alpha" make test TARGETS=ps2,image FORMAT=rgba,rgb This command runs the zero-alpha test for both ps2 and image backends with argb32 and rgb24 content formats. (2). CAIRO_TESTS="zero-alpha" make test TARGETS=ps2,image FORMAT=rgba This command runs the zero-alpha test for both ps2 and image backends with argb32 content format and so on. Signed-off-by: Ravi Nanjundappa <nravi.n@samsung.com> Reviewed-by: Bryce Harrington <bryce@osg.samsung.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
* More binary mode for WindowsBehdad Esfahbod2014-07-231-2/+2
| | | | | Based on: https://github.com/Alexpux/MINGW-packages/blob/master/mingw-w64-cairo/0012-more-binary-mode.mingw.patch
* vg: Use EGL_NONE and GLX_NONE in place of NoneRavi Nanjundappa2014-05-191-4/+4
| | | | | | | | Use EGL_NONE in EGL section and GLX_NONE in GLX section instead of None in cairo-boilerplate-vg.c Signed-off-by: Ravi Nanjundappa <nravi.n@samsung.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55805
* glx: Use GLX_NONE in place of NoneRavi Nanjundappa2014-05-161-5/+5
| | | | | | | | Use "GLX_NONE" in rgb and rgba attributes instead of "None" in cairo-boilerplate-glx.c Signed-off-by: Ravi Nanjundappa <nravi.n@samsung.com> Reviewed-by: Bryce Harrington <b.harrington@samsung.com>
* boilerplate: Maintain consistency in the usage of switch casesRavi Nanjundappa2014-05-063-22/+55
| | | | | | | | | Some of the switch cases used in boilerplate are not consistent across other source files in the same module. This patch fixes the consistency issues of switch case usage in the boilerplate module. Signed-off-by: Ravi Nanjundappa <nravi.n@samsung.com> Reviewed-by: Uli Schlachter <psychon@znc.in>
* boilerplate/gl: Disable thread awarenessMartin Robinson2013-04-042-0/+5
| | | | | | | | | | | | | | | | | | | This dramatically speeds up testing on NVidia and actually makes it possible to run traces within a reasonable amount of time. cairo-perf-trace results for: NVIDIA Corporation GeForce GTS 250/PCIe/SSE2 3.3.0 NVIDIA 310.14 Before: test min(s) median(s) stddev. count gvim 30.924 31.251 0.72% 5/6 firefox-fishbowl 168.751 201.017 12.46% 8/8 (exited early) After: test min(s) median(s) stddev. count gvim 1.294 1.325 1.79% 6/6 firefox-fishbowl 18.540 19.104 1.54% 6/6
* boilerplate: Add a mode for running threaded perf testsMartin Robinson2013-04-041-1/+6
| | | | | This is useful because the GL backend runs much faster on some drivers when thread awareness is disabled.
* boilerplate: rename xcb-render-0.0 to xcb-render-0_0Uli Schlachter2013-03-221-2/+2
| | | | | | | | | | | The test suite uses dots to separate the backend name from the content type. Thus, the backend name must not contain any dots. The xlib backend already calls its RENDER 0.0 target xlib-render-0_0 for this reason. This commit makes the xcb backend match this. Reported-by: Darxus <darxus@chaosreigns.com> Signed-off-by: Uli Schlachter <psychon@znc.in>
* test: Fix handling of dots in CAIRO_TEST_TARGETUli Schlachter2013-03-221-0/+2
| | | | | | | | | | | | | | | | | | Before this, the following happened: $ CAIRO_TEST_TARGET=image,xcb-render-0.0 make test Cannot find target 'image'. Known targets: image, [...] The reason for this is that _cairo_boilerplate_target_matches_name() doesn't get a null-terminated string, but instead has a pointer to the end of the string. However, strpbrk() expects a null-terminated argument and thus could return a result which points past the end of the input. This commit fixes exactly this. Reported-by: Darxus <darxus@chaosreigns.com> Signed-off-by: Uli Schlachter <psychon@znc.in>
* boilerplate/glx: Add a target with multisampling and stencil supportMartin Robinson2013-01-041-74/+96
| | | | | Add a gl-window target that supports multisampling. This is useful for testing the MSAA backend on the default framebuffer.
* boilerplate-xcb: Ignore MappingNotify eventsUli Schlachter2012-12-171-2/+8
| | | | | | | | | | | | | | | The boilerplate code makes sure that our tests didn't cause any X11 errors or X11 events, because those might confuse API users. However, when the keyboard layout changes, every connection gets a MappingNotify event. This means that the test and performance test suites failed when the keyboard layout was changed while they are running. Fix this by ignoring MappingNotifies. Reported by Arthur Huillet on IRC. Signed-off-by: Uli Schlachter <psychon@znc.in>
* boilerplate/gl: Round fractional window sizes upChris Wilson2012-06-291-9/+14
| | | | | | | | | | | | | | | | | A few test cases purposely create fractional surface sizes which can not be natively supported by the raster backends such as GL. For these backends we need to consistent in creating a surface that is large enough to contain the test, so we need to use ceil() rather than implicit truncation to integers. A consequence of the misalignment between the Window size and the surface size (where one was using ceil and the other not) is that the first row of the cairo surface would not be visible on the output. Based on a patch by Chuanbo Wen to fix 5 test cases, such as group-unaligned. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* Revert accidental push of ps debugging API.Chris Wilson2012-04-142-13/+46
| | | | | | | | | | This reverts commits 6ad8c96fd81e06cea6ada4a83e7c5614f150f914, a3f97d1d2e77a0fee4ca03d5dc9968952a440561, 25abe582982caeb07d1e0af4acca53bb110a33bf I should know better by now than to push without checking for outstanding changes.
* pdf (debug API): Export the ability to force fallbacksChris Wilson2012-04-121-13/+6
| | | | | | | | | We need to occasionally force fallbacks whilst testing the PDF output, so export a debug interface to do so in order to avoid poking around inside cairo internals. References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* ps (debug API): Export the ability to force fallbacksChris Wilson2012-04-121-14/+6
| | | | | | | | | We need to occasionally force fallbacks whilst testing the PostScript output, so export a debug interface to do so in order to avoid poking around inside cairo internals. References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* ps (API): Export the ability to set the creation date of the surfaceChris Wilson2012-04-121-19/+1
| | | | | | | | | | | A PostScript surface embeds a CreationDate comment into its document description pre-amble. Normally this is set to the time the surface is written out, except we set this to a constant value in the boilerplate for the purposes of mimicking a reference file. It may also be useful for external applications, so make it a public export. References: https://bugs.freedesktop.org/show_bug.cgi?id=48577 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* Add _cairo_win32_print_gdi_error to boilerplate codeMaarten Bosmans2012-04-101-2/+28
| | | | | This function is not exported in libcairo, so can't be used from the library.
* boilerplate/gl: set width and height to be at least 1Henry (Yu) Song2012-03-191-0/+5
|
* win32: fix compilation on cygwinAdrian Johnson2012-02-251-1/+3
|
* boilerplate: Use any2ppm from ANY2PPM env variableAndrea Canciani2012-02-231-2/+9
| | | | | | | | | If the environment variable ANY2PPM is set, use it as the path to the any2ppm program. Otherwise, default to "./any2ppm" as before. This makes it possible to set the ANY2PPM variable in the Makefile.win32 build system, which makes it possible to use the "test" target on the script backend.
* boilerplate/xlib: Exercise the mask based compositor for xrender version 0.0Chris Wilson2012-02-221-1/+72
| | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* xlib: Replace obsolete disable-xrender with shiny new device debug interfaceChris Wilson2012-02-221-46/+8
| | | | | | As prototyped with xcb. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* boilerplate/xlib: The xlib-fallback should be visually identical to imageChris Wilson2012-02-221-1/+1
|
* qt: Fix compilation, also minor fix for building against Qt5Oleg Romashin2012-02-121-2/+2
| | | | | | | Update to latest surface backend structure, removed obsolete functions and fixed functions API in order to be compatible with backend definition. Fixed compilation with Qt5
* boilerplate: Fix svg extensionAndrea Canciani2011-11-121-4/+4
| | | | | | The svg backend produces .svg files. Using the appropriate extension allows the test suite to check the vector output in addition to the PNG images.
* boilerplate: Remove unused thread id parameterAndrea Canciani2011-11-1221-88/+8
| | | | | The thread id is not used anymore (it is always == 0), so it can be removed.
* boilerplate: Provide close callback after opening any2ppm outputAndrea Canciani2011-11-112-4/+11
| | | | | | | | cairo_boilerplate_open_any2ppm() returns a FILE* obtined from popen() or fdopen(). It should hence be closed using pclose() or fclose() respectively. Fixes the crash on every script test on MacOS X.
* Silence some 'unused var' warningsAndrea Canciani2011-11-091-2/+0
|
* backends: Adds a new Cogl based backendRobert Bragg2011-10-113-0/+221
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds a new GPU accelerated backend for Cairo based on the Cogl 3D graphics API. This backend aims to support Cairo in a way that translates as naturally as possible to using a GPU, it does not strive to compete with the anti-aliasing quality of the image backend if it can't be done efficiently using the GPU - raw performance isn't the only metric of concern, so is power usage. As an overview of how the backend works: - fills are handled by tessellating paths into triangles - the backend has an extra fill_rectangle drawing operation so we have a fast-path for drawing rectangles which are so common. - strokes are also tessellated into triangles. - stroke and fill tessellations are cached to avoid the cpu overhead of tessellation and cost of upload given that its common for apps to re-draw the same path multiple times. The tessellations can survive translations and rotations increasing the probability that they can be re-used. - sources and masks are handled using multi-texturing. - clipping is handled with a scissor and the stencil buffer which we're careful to only update when they really change. - linear gradients are rendered to a 1d texture using a triangle strip + interpolating color attributes. All cairo extend modes are handled by corresponding texture sampler wrap modes without needing programmable fragment processing. - antialiasing should be handled using Cogl's multisampling API XXX: This is a work in progress!! TODO: - handle at least basic radial gradients (No need to handle full pdf semantics, since css, svg and canvas only allow radial gradients defined as one circle + a point that must lie within the first circle.) - currently we fall back to pixman for radial gradients. - support glyph rendering with a decent glyph cache design. The current plan is a per scaled-font growable cache texture + a scratch cache for one-shot/short-lived glyphs. - decide how to handle npot textures when lacking hardware support. Current plan is to add a transparent border to npot textures and use CLAMP_TO_EDGE for the default EXTEND_NONE semantics. For anything else we can allocate a shadow npot texture and scale the original to fit that so we can map extend modes to texture sampler modes.
* xlib: Fix compilation with --disable-xlib-xrenderUli Schlachter2011-10-081-0/+4
| | | | | | | | | | The boilerplate code tries to set PolyModePrecise on the xlib device. However, because xrender is disabled, cairo-xlib-xrender.h wasn't included and didn't include the needed xrender headers for this define. This define is copied from cairo-xlib-xrender-private.h Signed-off-by: Uli Schlachter <psychon@znc.in>
* boilerplate: Skip testing of null surfacesChris Wilson2011-09-261-0/+9
| | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* On OS/2, WIFSIGNALED and WTERMSIG are prototyped in sys/wait.hDave Yeo2011-09-183-0/+12
| | | | | | | | | | boilerplate/cairo-boilerplate-pdf.c | 4 ++++ boilerplate/cairo-boilerplate-ps.c | 4 ++++ boilerplate/cairo-boilerplate-svg.c | 4 ++++ build/configure.ac.system | 2 +- 4 files changed, 13 insertions(+), 1 deletions(-) Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* boilerplate-xcb: Print sequence numbersUli Schlachter2011-09-161-4/+6
| | | | | | | | The boilerplate code will now also print the low 16 bits of the sequence number for errors and events. This should make it a lot easier to find errors in e.g. a long xtrace output. Signed-off-by: Uli Schlachter <psychon@znc.in>
* cairo-xcb: Require libxcb 1.6Uli Schlachter2011-09-161-6/+0
| | | | | | | | | Since commit 968eb30bba1dc94, we use xcb_discard_reply(). This function was added in libxcb 1.6. "Fixes": https://bugs.freedesktop.org/show_bug.cgi?id=40925 Signed-off-by: Uli Schlachter <psychon@znc.in>
* test: Use the test-traps as the reference images for xlib/xcbChris Wilson2011-09-163-8/+8
| | | | | | | | | The test-traps provides a reference implementation of the traps-compositor as used by xlib, so we can use it to generate the reference images as well. (Of course checking that test-traps is itself correct and only differs in the renderer! ;-) Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* test: Complete set of baseline reference imagesChris Wilson2011-09-151-2/+2
| | | | | | test-base basically implements rendering ala cairo-1.0 and so serves as a useful baseline for comparing enhancements and to regression test the core libraries.
* Introduce a new compositor architectureChris Wilson2011-09-123-123/+245
| | | | | | | | | | | | | | | | | | Having spent the last dev cycle looking at how we could specialize the compositors for various backends, we once again look for the commonalities in order to reduce the duplication. In part this is motivated by the idea that spans is a good interface for both the existent GL backend and pixman, and so they deserve a dedicated compositor. xcb/xlib target an identical rendering system and so they should be using the same compositor, and it should be possible to run that same compositor locally against pixman to generate reference tests. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> P.S. This brings massive upheaval (read breakage) I've tried delaying in order to fix as many things as possible but now this one patch does far, far, far too much. Apologies in advance for breaking your favourite backend, but trust me in that the end result will be much better. :)
* Introduce cairo_mime_surface_tChris Wilson2011-08-151-0/+10
| | | | | | | | | | | The mime surface is a user-callback surface designed for interfacing cairo with an opaque data source. For instance, in a web browser, the incoming page may be laid out and rendered to a recording surface before all the image data has finished being downloaded. In this circumstance we need to pass a place holder to cairo and to supply the image data later upon demand. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* script: enable by defaultChris Wilson2011-08-141-1/+1
| | | | | | | I'm willing to make this a supported backend as I find it to be an invaluable debugging tool... Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* Introduce cairo_surface_observer_t for performance analysisChris Wilson2011-08-141-0/+10
| | | | | | | | | | | | | | Another logging passthrough surface that records the style of operations performed trying to categorise what is slow/fast/important. In combination with perf/cairo-analyse-trace it is very useful for understanding what a trace does. The next steps for this tool would be to identify the slow operations that the trace does. Baby steps. This should be generally useful in similar situations outside of perf/ and should be extensible to become an online performance probe. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* boilerplate: improve fidelity of surface extractionChris Wilson2011-08-131-3/+15
| | | | | | Create an image surface of equivalent content to the original. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* XCB: Store the flags per-connection onlyUli Schlachter2011-07-211-29/+16
| | | | | | | | | | | | | | | Every xcb surface had its own copy of the flags from the time that it was created. This means that, if you want to make use of cairo_xcb_device_debug_cap_xrender_version() and cairo_xcb_device_debug_cap_xshm_version(), you first had to create a dummy xcb surface, use that to get access to the cairo_device_t so that you can use these functions and only then create your real surface, because the change only affected new surfaces. This commit changes everything to use the connection's flag and removes the per-surface flags. This avoids the dummy surfaces completely. Signed-off-by: Uli Schlachter <psychon@znc.in>
* xcb: Take advantage of clip-boxesChris Wilson2011-07-201-23/+69
| | | | | | | | | | | | | | | | | A demonstration of step 2, improves performance for selected benchmarks on selected GPUs by up to 30%. firefox-fishbowl on snb {i5-2520m): 42s -> 29s. firefox-talos-gfx on snb: 7.6 -> 5.2s. firefox-fishbowl on pnv (n450): 380 -> 360s. Whist this looks like it is getting close to as good as we can achieve, we are constrained by both our API and Xrender and fishbowl is about 50% slower than peak performance (on snb). And it fixes the older performance regression in firefox-planet-gnome. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* Excise xcb-drmChris Wilson2011-07-141-12/+0
| | | | | | | | | | | | | | | | The experiment was at best a pyrrhic victory. Whilst it did show that you could successfully subvert cairo_xcb_surface_t and provide the rendering locally faster (than the xlib driver at that time), any performance benefits were lost in the synchronisation overheads and server-side buffer allocation. Once cairo-gl is mature, we need to look at how we can overcome these to improve client-side rendering In the meantime, cairo-xcb is no longer my playground for experimentation and is shaping up to become a stable backend... Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* Excise DRM-XrChris Wilson2011-07-141-12/+0
| | | | | | | I've since incorporated (nearly) all the features from cairo-drm into xf86-video-intel, making this experiment defunct. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* Xlib: Fix boilerplate to work with xlib-xcbUli Schlachter2011-07-031-0/+6
| | | | | | | | | | | | | | | | | | | Xlib boilerplate includes cairo-xlib-surface-private.h, so that it can cast the xlib cairo_surface_t to cairo_xlib_surface_t and then mess with some internals of that struct. However, xlib-xcb doesn't use that struct and thus this results in random memory corruption. "Luckily", all the fields that this messes with don't corrupt any fields in cairo_xlib_xcb_surface_t, but instead this writes past the end of the buffer that was returned from malloc. This commit just adds an #if to disable this code section since I have no idea what a proper fix would be. This means that the xlib-fallback backend doesn't actually test any fallbacks with xlib-xcb, however it never did so anyway. If you have any idea how to fix xlib-fallback with xlib-xcb, please speak up. Signed-off-by: Uli Schlachter <psychon@znc.in>