summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Enable glesv2baserock/genivi/1.12.10Pedro Alvarez2014-04-101-1/+1
|
* Configure cairo for use with weston in morphBen Brewer2014-04-101-0/+8
|
* 1.12.10 release1.12.10Chris Wilson2013-01-162-1/+50
|
* gl: Follow up fix for the previous commitMartin Robinson2013-01-151-1/+1
| | | | | | | Handle "fake" surfaces created by _cairo_gl_pattern_to_source which just embed a GL backend operand. These surfaces do not have a backend, so we should not fall back if a surface without a backend is not a texture surface.
* gl: Support for non-texture sources and masksHenry Song2013-01-151-0/+3
| | | | | | | | | If a GL surface is not a texture and is used as source or mask, fall back to using an image surface as an intermediary. Fixes subsurface-image-repeat, subsurface-modify-child, subsurface-modify-parent, subsurface-outside-target, subsurface-pad, subsurface-reflect, subsurface-repeat, and subsurface-scale.
* gl/msaa: Check for more extensions before using MSAAMartin Robinson2013-01-151-16/+17
| | | | | The MSAA compositor is implicitly relying on the existence of several OpenGL extensions. This change makes those dependencies explicit.
* script: Set decompression length prior to calling decompressorsChris Wilson2013-01-141-1/+1
| | | | | Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=59224 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* xlib: Initialise Pixmap for proxy sourcesChris Wilson2013-01-131-1/+2
| | | | | | | So that we do not try to tell X to free a garbage pixmap and promptly kill us. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* compositor: Pass back the internal failureChris Wilson2013-01-131-2/+2
| | | | | | | | In order to pass back a CAIRO_INT_STATUS_UNSUPPORTED, we need to use the internal error surface creation functions as they do not assert on private error codes. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* compositor: Convert image surface into backend sourceChris Wilson2013-01-131-15/+46
| | | | | | | | | Before passing a surface to the backend composite functions, they expect them to be a native source. The copy'n'paste code for the mask compositor forgot to perform the conversion upon the clip surfaces, which originally were native to the backend and are now images. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* xlib: Handle lack of XRenderFillRectanglesChris Wilson2013-01-134-37/+157
| | | | | | | | Remember to check for a supported render version before making a FillRectangle request, and fallback to the core protocol where possible instead. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* xlib: Only fallback through the mask intermediate if we can composite the maskChris Wilson2013-01-113-16/+38
| | | | | | | | Before rendering into the mask, we should first check whether the subsequent call to composite the mask will trigger a fallback. In that case, we should fallback earlier and do the operation in place. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* gl/msaa: Rely on the stencil buffer to cache the clipMartin Robinson2013-01-093-17/+46
| | | | | | | | | | When using a texture surface the depth/stencil buffer is private to cairo so we can rely on the fact that any previously painted clip is still valid. We also only scissor when there's a previously painted clip on the stencil buffer, otherwise we disable the scissor test. This fixes a few test cases.
* gl/msaa: No need to set the clip when maskingMartin Robinson2013-01-091-1/+0
| | | | | | After 5e9083f882859201c5df18fc870577a224f88cbb there's no need to set a clip on the cairo_gl_composite_t when masking. Clips are converted to traps and rendered directly when masking now.
* xcb: _cairo_scaled_font_reset_cache does it own lockingChris Wilson2013-01-091-2/+0
| | | | | | So we can drop ours. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* xlib: map-to-image requires an extentsChris Wilson2013-01-091-1/+2
| | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* stroke: Flip the dev slope as well for computing the cusp on a degeneracyChris Wilson2013-01-091-0/+2
| | | | | | | Otherwise, the join think it starts and end in exactly the same direction and elimiates the round capping. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* gstate: Use the polygon intermediate for geometry queriesChris Wilson2013-01-091-12/+12
| | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* scaled-font: Fix use after free when clearing the glyph cacheChris Wilson2013-01-091-2/+3
| | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* scaled-font: Make reset-font-cache threadsafeChris Wilson2013-01-091-35/+31
| | | | | | | Stop trying to workaround the destroy-callback requiring the font mutex as we already hold the mutex whilst cleaning up the font caches. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* gl: Do less work when acquiring and releasing devicesMartin Robinson2013-01-084-24/+301
| | | | | | | | After acquiring a GL device and the same GL context, surface, and display combination is already active outside of Cairo, do not ask EGL or GLX to change the current context as that may cause a flush on some drivers. Also do not unset the context when releasing the device for the same reason.
* image: Allocate a temporary buffer for inline span compositionChris Wilson2013-01-081-4/+20
| | | | | | | Allow the inpline span compositor to operate on wider images than its temporary buffer by allocating a scanline mask. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* scaled-font: Remove a non-threadsafe double-freeze assertChris Wilson2013-01-081-1/+0
| | | | | | | Sadly we cannot check ahead of acquiring the lock whether we hold the lock. Just have to rely on lockdep. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* xlib/shm: Only destroy an existing damageChris Wilson2013-01-081-2/+4
| | | | | | _cairo_damage_destroy() does not like to be passed a NULL. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* xlib/shm: Discard damage upon shm finishChris Wilson2013-01-083-0/+13
| | | | | | | | | Both to make sure we do not leak the memory, but to also prevent _cairo_xlib_surface_put_shm() from operating upon the finished shm surface after the display is closed. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=58253 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* scaled-font: Hold the scaled font mutex whilst reaping from the global cacheChris Wilson2013-01-081-2/+7
| | | | | | | | | | | | | If we need to reap the global cache, this will call back into the scaled font to free the glyph page. We therefore need to be careful not to run concurrently with a user adding to the glyph page, ergo we need locking. To complicate matters we need to be wary of a lock-inversion as we hold the scaled_font lock whilst thawing the global cache. We prevent the deadlock by careful ordering of the thaw-unlock and by inspecting the current frozen state of the scaled-font before releasing the glyph page. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* scaled-font: Assert if attempting to finish a frozen fontChris Wilson2013-01-081-0/+12
| | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* scaled-font: Free the cached glyphs from the font before taking the global lockChris Wilson2013-01-081-1/+20
| | | | | | | | | | | In the case of a recording surface we may recurse into the global glyph cache so we need to be careful and stage the ordering of how we free the glyphs. So first we finish any information and surfaces from the scaled font glyph cache (and so triggering recursion into other scaled fonts) and then take the global cache and remove our pages. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54950 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* scaled-font: Always hold the mutex even for single glyph probesChris Wilson2013-01-081-20/+21
| | | | | | | | | | The freeze/thaw routines have a side-effect of managing the global glyph cache in addition to taking the mutex on the font. If we don't call them, we may end up indefinitely keeping the global glyph cache frozen (effectively leaking glyphs to the maximum of all open fonts) and triggering asserts. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* script: Thaw the scaled font cache on the error pathChris Wilson2013-01-081-1/+3
| | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* script: Simply exchange source/dest images for _set_source_imageChris Wilson2013-01-081-5/+14
| | | | | | | But note we can only do the exchange if they do indeed match and there are no other references (the objects are only on the stack). Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* script: Attempt to decompress images in placeChris Wilson2013-01-083-167/+247
| | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* image: Call pixman without a mask for opaque regions of inplace_spansChris Wilson2013-01-071-10/+47
| | | | | | | | | | | | | Speedups ======== firefox-paintball 59462.09 -> 40928.76: 1.45x speedup firefox-fishtank 43687.33 -> 34627.78: 1.26x speedup firefox-tron 52526.00 -> 45754.73: 1.15x speedup However in order to avoid a regression with firefox-talos-svg we need to prevent splitting up the scanline when using a gradient source. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* xlib: Simplify source creation by use of map-to-imageChris Wilson2013-01-061-59/+33
| | | | | | | We were open-coding the functionality of map-to-image inside the source creation routines. so refactor to actually use map-to-image instead. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* xlib/shm: Only mark the shm pixmap as active if we upload into itChris Wilson2013-01-061-9/+14
| | | | | | | Be more strict with when we mark the pixmap as active so that we only wait for the actual XCopyArea involving the pixmap to complete. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* script: Recompress strings using LZO whilst binding tracesChris Wilson2013-01-057-56/+227
| | | | | | | | | | Try using the lighter-weight LZO decompressor in an effort to speed up replays (at the cost of making the bound traces slightly larger). Presuming that with the slight increase in file size (from -1% to +10%), the file data remains in the readahead buffer cache, replays see a performance improvement of between 5-10%. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* gl: Better handling of clear surfacesMartin Robinson2013-01-041-6/+37
| | | | | | When clearing a GL surface, set is_clear to true, and when mapping to an image, handle is_clear like surfaces without modification. Additionally, explicitly clear surfaces created via cairo_surface_create_similar.
* 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.
* gobject: Fix my typo s/TEST/TEXT/ in the previous commitChris Wilson2013-01-041-1/+1
| | | | Again reported by Kouhei Sutou, who I am grateful for his deligence.
* gobject: Fix "text_cluster_flags_get_type" typoKouhei Sutou2013-01-041-1/+1
| | | | The macro missed the text from the name, rendering it useless.
* gl/msaa: Only clear parts of the stencil buffer we will useHenry Song2013-01-033-11/+44
| | | | | | | Writing to the stencil buffer can be expensive, so when using the stencil buffer for clipping only clear the clip extent. When using the stencil buffer to prevent overlapping rendering during stroking, only clear the approximate stroke extents.
* gl/msaa: Avoid the stencil buffer when possible during maskingAlejandro G. Castro2013-01-031-15/+53
| | | | | In this case we can draw the clip path and avoid the stencil buffer, which can be expensive.
* gl/msaa: Add full support for masking with the SOURCE operatorHenry Song2013-01-033-49/+152
| | | | | | Since OpenGL does not have a means to represent a masking SOURCE operation in one step, we use two steps combined with the ADD operator.
* gl: Support the GL_IMG_texture_npot extensionChuanbo Weng2013-01-031-1/+2
| | | | | This extension, used by older PowerVR drivers, is functionally equivalent to the GL_OES_TEXTURE_NPOT extension.
* Add missing local slim proto for cairo_recording_surface_createChris Wilson2013-01-031-0/+1
| | | | | | Dependency introduced in 749ef6be4d11b95d666b0e5fe06df926b828d655 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* scaled-font: Mention ownership of returned object from get_font_face()Chris Wilson2013-01-031-1/+2
| | | | | | As suggested by Simon Sapin. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* xlib: Avoid copying the source twice if it is an imageChris Wilson2013-01-031-10/+27
| | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* gobject: Add the correct macro name for the hint-metrics typeKouhei Sutou2013-01-031-0/+2
| | | | | | | | | s/CAIRO_GOBJECT_TYPE_HNT_METRICS/CAIRO_GOBJECT_TYPE_HINT_METRICS/ However, as we have already released the broken headers, we need to preserve that mistake in case applications are already using. Since it is just a #define, there is little associated cost with carrying both the incorrect spelling and the corrected define.
* stroke: Make the incremental trapezoid stroker optionally available againChris Wilson2013-01-0312-30/+1489
| | | | | | | | | | | Whilst it cannot handle self-intersecting strokes (which includes the antialias region of neighbouring lines and joints), it is about 3x faster to use than the more robust algorithm. As some backends delegate the rendering, the quality may still be preserved and so they should be responsible for choosing the appropriate method for generation of the stroke geometry. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* xlib: Use SHM transport for ordinary image uploadsChris Wilson2013-01-031-23/+77
| | | | | | | | In theory this should just save a single copy, however PutImage will break up requests into a series of scanlines requests which is less efficient than the single-shot transfer provided by ShmPutImage. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>