Benjamin Otte
a5f8a74ec1
vulkan: Only render minimal region
...
It's faster to render once for every rectangle in the clip region than
rendering the outline of the clip region.
Especially because this reduces the time necessary to build up the frame
data.
In widget-factory (where we have 3 rectangles), this leads to a 5x
speedup in the rendering time rendering alone.
Snapshotting time goes from 10ms to ~1ms, which is another huge
improvement.
2016-12-27 00:31:33 +01:00
Benjamin Otte
293248c1d3
gdkvulkan: Track changes per swapchain image
...
... and use those in begin_frame() to ensure all of the invalid area
gets invalidated.
2016-12-26 22:24:22 +01:00
Benjamin Otte
af917c4ade
vulkan: Handle linear gradients
...
Note: We interpolate premultiplied colors as per the CSS spec. This i
different from Cairo, which interpolates unpremultiplied.
So in testcases with translucent gradients, it's actually Cairo that is
wrong.
2016-12-26 17:22:02 +01:00
Benjamin Otte
c0c44c7b9c
tests: Add linear gradient test
2016-12-26 17:22:02 +01:00
Benjamin Otte
573ceb0340
tests: Add a patternspec argument for test creation
...
That way, I don't need to recreate all the tests I don't care about.
This is particularly useful when I want to change the size of the
testcase.
2016-12-26 17:22:01 +01:00
Benjamin Otte
d7e867aa95
tests: Make rendernode --dump-variant actually work
2016-12-26 17:22:01 +01:00
Benjamin Otte
3c8518dce3
gsk: Add missing Mozilla copyright header
...
I stole one of their shader functions, and if I steal, I might as well
do it right.
2016-12-26 17:22:01 +01:00
Benjamin Otte
599cc995f3
css: Handle repeating gradients with only one offset
...
Example:
repeating-linear-gradient(red 50%, blue 50%)
Those gradients in Firefox draw a solid image of the last color, so do
the same here.
2016-12-26 17:22:01 +01:00
Benjamin Otte
5017c3be65
gsk: Insist on ordered color stops
...
I don't want to sort them later for the shader preparation, so make
sure they come in ordered.
2016-12-26 17:22:01 +01:00
Benjamin Otte
3a79b17309
vulkan: Fix coordinate setup
...
This makes rendering textures work when the top left of the rendered
texture is not at (0, 0).
2016-12-26 17:22:01 +01:00
Benjamin Otte
c7083a5d37
tests: Make sure number of runs is 1.
2016-12-26 17:22:01 +01:00
Daniel Boles
2a7171534e
Box: Restore an accidentally deleted comment
...
Also, split a MAX() onto its own line to match the others.
2016-12-26 10:57:51 +00:00
Daniel Boles
71bbd8881f
Box: avoid recalc/reassignments, improve var names
...
Homogeneous branches repeated the calculation/assignment of the initial
space available to children. This avoids that by shuffling some code.
Perhaps more importantly, in doing that, I ended up with some ambiguous
names, and Company and I realised how vague the pre-existing naming was.
"size" becomes "extra_space", as this is what it represents. Conversely,
"extra" becomes "size_given_to_child" (albeit still given out in two
different ways depending on whether the Box is homogeneous). My hope is
that these sections of code are now somewhat less baffling than before!
2016-12-25 23:16:14 +00:00
Daniel Boles
5d10174031
Box: Don't unnecessarily repeat a function call
...
The spacing was already saved in a variable just above.
2016-12-25 21:46:40 +00:00
djb
476cadc7f8
tests: Remove executable bit from C files
2016-12-25 21:46:40 +00:00
Benjamin Otte
78582dd5e9
tests: Fix logic to detect argument length
2016-12-25 06:23:12 +01:00
Benjamin Otte
eacf725778
tests: Add a --runs argument to rendernode
...
This way we can rerun fast tests lots of times - not so much for
averaging times, but more for sysprof'ing.
2016-12-25 06:23:12 +01:00
Benjamin Otte
c99b46c46d
tests: Add another test
...
In this test, Cairo is almost as fast as Vulkan. I wonder why.
2016-12-25 06:23:12 +01:00
Benjamin Otte
5878f9d8af
vulkan: Add shader for color drawing with rectangle clip
2016-12-25 06:23:12 +01:00
Benjamin Otte
b30225e67c
vulkan: We use VK_FORMAT_B8G8R8A8_UNORM
...
... not SRGB. SRGB messes up alpha compositing, GdkRGBA and everything
else.
2016-12-25 06:23:12 +01:00
Marek Černocký
16a9a82021
Updated Czech translation
2016-12-24 14:40:35 +01:00
Benjamin Otte
aa0ec774bf
vulkan: Add proof-of-concept clip implementation
...
We can now clip to cicular rounded rectangles when drawing colors.
2016-12-24 06:19:16 +01:00
Benjamin Otte
81c487b841
vulkan: Fold clip into push constants
...
As a side effect, the clipping data is now available inside shaders.
Not that any shader would use them yet, but they could!
2016-12-24 06:19:16 +01:00
Benjamin Otte
18b65a2378
vulkan: Change handling of push constants
...
Instead of storing the wire format, store the true structs and only
convert to the wire format when needed.
2016-12-24 06:19:16 +01:00
Benjamin Otte
b11b7dfb1a
gsk: Add debug category for fallbacks
...
... and use it for the cases in Vulkan where we fall back to Cairo.
2016-12-24 06:19:16 +01:00
Benjamin Otte
2bca24c455
gsk: Add GskVulkanClip
...
This is now tracking the clips added by the clip nodes.
If any particular node can't deal with a clip, it falls back to Cairo
rendering. But if it can, it will render it directly.
2016-12-24 06:19:16 +01:00
Benjamin Otte
1d84555729
iconhelper: Invalidate style before accessing texture
...
Invalidating the style might cause invalidation of the texture. So we
end up with a pointer to freed memory.
SAD!
2016-12-24 06:19:16 +01:00
Benjamin Otte
89d38ae93f
vulkan: Try combining draw calls
...
This gives a 5-7% speedup in the case where we're just drawing N colors
and nothing else. So it;s not tremendously useful, but noticeable.
2016-12-24 06:19:16 +01:00
Garrett Regier
23d10df6c6
gsk: Fix memory leak in gsk_render_node_write_to_file()
2016-12-23 07:22:41 -08:00
Piotr Drąg
2750bb5e87
Update POTFILES.in
2016-12-23 16:18:23 +01:00
Benjamin Otte
6cc08d60ef
calendar: Implement snapshot()
2016-12-23 12:07:22 +01:00
Benjamin Otte
b97e4e8631
tests: Improve rendernode test further
...
- Print benchmark output in fallback path
- Always run rendering, even when no filename given
- Don't require a filename when running with --benchmark
2016-12-23 11:31:35 +01:00
Benjamin Otte
a36e5ceea7
cellrenderer: Remove render() vfunc
...
Make the last 2 cell renderers create the cairo node themselves.
2016-12-23 11:11:52 +01:00
Benjamin Otte
513a8c46af
cellrendererpixbuf: Implement snapshot()
2016-12-23 10:50:04 +01:00
Benjamin Otte
a0f65d16bc
cellrendererprogress: Implement snapshot()
2016-12-23 10:44:49 +01:00
Benjamin Otte
b901572d86
cellrenderertoggle: Implement snapshot()
2016-12-23 09:31:54 +01:00
Benjamin Otte
c412a717f1
cellrenderertext: Implement snapshot()
2016-12-23 09:23:07 +01:00
Benjamin Otte
677c5bdedf
cellrenderer: Move snapshotting down into cell renderers
...
Now that every call to GtkCellArea is a snapshot call and no more cairo
calls are left, move the actual differentiation between Cairo and
Snapshot down to the cell renderer.
2016-12-23 09:23:04 +01:00
Benjamin Otte
af6e7cc169
tests: Add rendernode-create-tests
...
Little tool that creates a bunch of test files to throw add the
rendernode binary.
They should really be part of a testsuite, but we have none, so OI just
put them here.
2016-12-23 08:11:01 +01:00
Benjamin Otte
4bb0c70c11
gsk: Add docs and error handling to serialization API
2016-12-23 08:11:01 +01:00
Benjamin Otte
4e866ec06b
tests: Add some command-line flags to rendernode
2016-12-23 08:11:01 +01:00
Benjamin Otte
5e089c4345
gsk: Add gsk_render_node_write_to_file()
...
For when you're in a debugger and need to have a closer look at this
node...
2016-12-23 08:11:01 +01:00
Benjamin Otte
087ea8e531
gsk: Warn on cairo errors during gsk_render_node_draw()
...
It's the same warning we use inside GTK for when stuff weirdly goes
wrong.
2016-12-23 08:11:01 +01:00
Benjamin Otte
08f9a6078b
gsk: Include config.h
...
The more you know:
Not including config.h causes the public API implemented in this file to
not be exported in the resulting library.
2016-12-23 08:11:01 +01:00
Benjamin Otte
adcde3034e
gsk: Implement gsk_renderer_render_texture() on GL
2016-12-23 08:11:01 +01:00
Benjamin Otte
786d3a013e
vulkan: Implement gsk_renderer_render_texture()
2016-12-23 08:11:01 +01:00
Benjamin Otte
b0d5224de5
tests: Use gsk_renderer_render_texture()
...
Only keep the version that calls gsk_render_node_draw() if people
specify the --fallback option.
The actual renderer selection works just as for regular GTK. The easiest
way to influence it is setting the GSK_RENDERER environment variable.
2016-12-23 08:11:01 +01:00
Benjamin Otte
6c56793147
gsk: Add gsk_texture_download() API
...
Now users can download pixels and make everything slooooooow.
2016-12-23 08:11:01 +01:00
Benjamin Otte
d58799ff7a
gdk: Export gdk_cairo_surface_paint_pixbuf() into private header
2016-12-23 08:11:01 +01:00
Benjamin Otte
be8c999fe8
docs: Add GskTexture
2016-12-23 08:11:01 +01:00