Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2010-06-07 | gl: Fix span renderer doing bad stuff for CLEAR and SOURCEgl | Benjamin Otte | 1 | -0/+7 | |
SOURCE will fallback now, CLEAR is identical to DEST_OUT with white. | |||||
2010-06-07 | gl: Fix span renderer for unbounded spans | Benjamin Otte | 1 | -23/+49 | |
The span renderer used to not output rects for the top and bottom rows when they didn't contain any spans. | |||||
2010-06-07 | gl: Add a simple spans renderer for stroke/fill | Benjamin Otte | 1 | -3/+175 | |
It's very simple as clipped polygons or ANTIALIAS_NONE still return UNSUPPORTED. Also, no optimizations are done, so even pixel-aligned rectangles use the full span rendering. Still, there are no performance regressions in the benchmark traces and firefox-talos-svg and swfdec-giant-steps both got ~15% faster. | |||||
2010-06-07 | Remove _cairo_surface_composite_trapezoids_as_polygon() | Benjamin Otte | 4 | -113/+0 | |
The function computed the composite rectangles wrong and was only used in a gl fallback anyway. So instead of trying to fix it, just remove it and make sure gl doesn't fallback. | |||||
2010-06-07 | gl: Fix vertex size changes not causing updates of the operands | Benjamin Otte | 1 | -7/+10 | |
Check vertex size stays identical when setting up vertices. | |||||
2010-06-07 | gl: Add a gradient texture cache | Benjamin Otte | 4 | -9/+81 | |
For firefox-planet-gnome, 19135 times a gradient gets rendered using only 10 different gradients. So we get a 100% hit rate in the cache. Unfortunately, texture upload is not the biggest problem of this test, as the performance increase is only moderate - at least on i965: 34.3s => 33.5s | |||||
2010-06-07 | device: flush before setting finished | Benjamin Otte | 1 | -2/+2 | |
Otherwise APIs critical for flushing - in particular acquiring the device - do not work. | |||||
2010-06-07 | gl: Make gradient textures a separate object | Benjamin Otte | 5 | -145/+327 | |
This is necessary so we can do proper refcounting and don't delete the gradient texture prematurely. | |||||
2010-06-07 | gl: Use the generic functions for filter/extend in gradients | Benjamin Otte | 2 | -18/+10 | |
2010-06-07 | gl: Create separate functions for setting extend and filter | Benjamin Otte | 1 | -19/+28 | |
2010-06-07 | gl: Switch to deferred rendering | Benjamin Otte | 4 | -32/+28 | |
1) call _cairo_gl_composite_flush() or cairo_surface_flush() where needed 2) Destroy texture operands when necessary 3) get rid of _cairo_gl_composite_end() With this patch, vertices are not flushed immediately anymore, but only when needed or when a new set of vertices is emitted that requires an incompatible setup. This improves performance a lot in particular for text. (gnome-terminal-vim gets 10x faster) | |||||
2010-06-07 | gl: Make using shaders an explicit argument | Benjamin Otte | 1 | -7/+8 | |
This is preparation for a followup patch | |||||
2010-06-07 | gl: Special case blend mode for CAIRO_CONTENT_COLOR | Benjamin Otte | 1 | -0/+2 | |
This ensures that alpha stays at 1 for RGB in all cases. | |||||
2010-06-07 | gl: rework _cairo_gl_set_operator() | Benjamin Otte | 3 | -7/+13 | |
1) store the current operator. This will be useful later to check if the operator changed. 2) pass the context instead of the destination as first argument. The destination is known to be the current target. | |||||
2010-06-07 | gl: Only resetup textures if we need to | Benjamin Otte | 1 | -0/+45 | |
2010-06-07 | gl: Do not reset the current target on release | Benjamin Otte | 1 | -1/+1 | |
This now also requires a call to cairo_device_flush(). | |||||
2010-06-07 | glx: When acquiring device, use the correct drawable | Benjamin Otte | 1 | -3/+13 | |
2010-06-07 | gl: Store the vertex offset in the operand | Benjamin Otte | 2 | -0/+2 | |
2010-06-07 | gl: Introduce a temporary texture unit | Benjamin Otte | 4 | -1/+28 | |
...and use it for image uploads. This makes sure that the texture units used for SOURCE and MASK get not clobbered when images get uploaded to textures. | |||||
2010-06-07 | gl: Only allocate a framebuffer if we need one | Benjamin Otte | 3 | -19/+29 | |
This way, we don't clobber the current target when creating textures for image surfaces. | |||||
2010-06-07 | Call cairo_surface_flush() before setting finished | Benjamin Otte | 1 | -1/+1 | |
With the current code, the surface will never be flushed as the flush function checks if the surface is finished, and if so, doesn't call the vfunc. Ooops. | |||||
2010-06-07 | gl: Flush properly in set_destination | Benjamin Otte | 1 | -16/+17 | |
2010-06-07 | gl: Don't reset vertex size | Benjamin Otte | 2 | -4/+7 | |
2010-06-07 | gl: Remove check if we're between begin/end | Benjamin Otte | 2 | -8/+0 | |
This will be useless soon, because we will keep the current state alive as long as possible. | |||||
2010-06-07 | gl: Stop disabling the vertex array and the array buffer | Benjamin Otte | 2 | -8/+8 | |
2010-06-07 | gl: Do not reset shaders on _end() | Benjamin Otte | 3 | -13/+31 | |
Instead, keep the shader around until cairo_device_flush() is called. | |||||
2010-06-07 | region: clarify docs of cairo_region_equal() | Benjamin Otte | 1 | -4/+5 | |
2010-06-07 | gl: Make _shader_by_type() a getter | Benjamin Otte | 3 | -12/+22 | |
And refactor code to do the current_shader assigning itself. | |||||
2010-06-07 | gl: bind all shader variables at the same place | Benjamin Otte | 2 | -17/+20 | |
Avoids the need to bind the shader when creating it. | |||||
2010-06-07 | gl: Set GL_BLEND and GL_SCISSOR_TEST globally | Benjamin Otte | 3 | -8/+12 | |
Note that we do set them unconditionally in _begin() because a flush might have cleared them. | |||||
2010-06-07 | gl: Introduce flush functions | Benjamin Otte | 4 | -8/+60 | |
The flush functions will clear the state that will in the future be kep unconditionally. | |||||
2010-06-07 | docs: fix typo | Benjamin Otte | 1 | -1/+1 | |
2010-06-07 | device: Make flush vfunc return a cairo_status_t | Benjamin Otte | 3 | -4/+11 | |
Mirror the behavior of the surface flush vfunc: Make it return a status and if it's an error set it on the device. | |||||
2010-06-07 | gl: Move unsetting the state into the operand destroy function | Benjamin Otte | 1 | -14/+29 | |
2010-06-07 | gl: get rid of the operand's pattern variable | Benjamin Otte | 2 | -13/+10 | |
Now someone just needs to teach cairo-gl to not use cairo_pattern_acquire_surface() and we could avoid the nasty hack in cairo_gl_operand_destroy(). | |||||
2010-06-07 | gl: Check mask's attributes for component alpha | Benjamin Otte | 2 | -7/+8 | |
... and don't duplicate that information into the cairo_gl_composite_t | |||||
2010-06-07 | gl: Merge fixed function setup into general texture setup | Benjamin Otte | 1 | -50/+34 | |
2010-06-07 | gl: Move function | Benjamin Otte | 1 | -29/+29 | |
I wanna use it elsewhere and keep the diff small. | |||||
2010-06-07 | gl: Simplify mask operand setup code | Benjamin Otte | 1 | -33/+7 | |
Component alpha just has one different value | |||||
2010-06-07 | gl: Get rid of operand argument to emit functions | Benjamin Otte | 4 | -30/+19 | |
2010-06-07 | gl: Add an enum for tex units | Benjamin Otte | 3 | -32/+27 | |
Instead of hardcoding 0 for source and 1 for mask, use an enum. It's also clearer when functions take a cairo_gl_tex_t argument instead of a GLuint. | |||||
2010-06-07 | gl: Keep a copy of the current operand in the context | Benjamin Otte | 2 | -4/+18 | |
Note that they are currently only valid as long as the cairo_gl_composite_t exists, but that will be changed soon. | |||||
2010-06-07 | gl: Move struct definitions in header | Benjamin Otte | 1 | -33/+33 | |
2010-06-07 | gl: operand->texture.surface cannot be NULL | Benjamin Otte | 1 | -7/+3 | |
2010-06-07 | gl: Remove composite_t argument from _flush() function | Benjamin Otte | 3 | -13/+9 | |
2010-06-07 | gl: Remove dependency on composite_t in draw function | Benjamin Otte | 1 | -2/+2 | |
2010-06-07 | gl: Remove unneeded and broken workaround | Benjamin Otte | 1 | -13/+1 | |
We now ensure the values are properly zeroed when setting the operator. | |||||
2010-06-07 | gl: Switch src alpha handling to a tiny on/off function | Benjamin Otte | 1 | -15/+7 | |
Instead of doing setup every time, we just set this one flag. Much nicer. | |||||
2010-06-07 | gl: Avoid redundant mask setup | Benjamin Otte | 1 | -2/+0 | |
The mask doesn't change, so no need to set it up twice | |||||
2010-06-07 | gl: Split fixed-function operand setup into own function | Benjamin Otte | 1 | -109/+42 | |