Timm Bäder
fd728ea8bc
gl renderer: Lower maximum gradient stop count
...
6 is still plenty according to my market research.
Should help with #2624
2020-09-24 19:08:22 +02:00
Timm Bäder
8d7b3bade3
gl renderer: Fall back to cairo if gradients use too many stops
2020-09-24 19:08:22 +02:00
Timm Bäder
9eaa8bd1e7
gl renderer: Only return error if creating programs failed
2020-09-24 19:08:22 +02:00
Timm Bäder
15994db74d
gl renderer: Use scale_x/y when rendering clipped nodes
2020-09-24 19:08:22 +02:00
Timm Bäder
467be0b7dc
gl renderer: Don't use ops_get_scale() when rendering clip nodes
...
Differentiate between scale_x and scale_y. This works better for e.g.
transform nodes using scaleX().
2020-09-24 19:08:22 +02:00
Timm Bäder
84d2a33c10
gl renderer: Support scaleX/Y better when rendering radial gradients
...
We should do this everywhere, but this is a start.
2020-09-24 19:08:22 +02:00
Timm Bäder
b8e4240751
gl renderer: Add radial gradient shader
2020-09-18 15:39:07 +02:00
Timm Bäder
0c2d00835b
gl renderer: Set an error if we don't have one already
...
We can't fail and not set the error, since caller don't expect that.
2020-09-18 15:39:07 +02:00
Matthias Clasen
0c6226c20b
gsk: Add a radial gradient node
...
Only a fallback implementation for now.
Fixes #2262
2020-09-18 15:38:55 +02:00
Matthias Clasen
1057588a8f
gsk: Fix the gl texture cache
...
We need to include both the scale and the filtering
in the key for the texture cache, since those affect
the texture.
This fixes misrendering in the recorder in the inspector
whenever transforms are involved. An example where this
was showing up is testrevealer's swing transition.
2020-09-09 13:55:09 -04:00
Matthias Clasen
e0cc7b5d86
Check for pixel-alignedness for interpolation
...
When rendering to an offscreen because of transforms,
check if transforming the bounds of the node results
in a non-axis-aligned quad. If it doesn't, we want
GL_NEAREST interpolation to get sharp edges. Otherwise,
we use GL_LINEAR to get better results for things
that are actually transformed.
2020-09-04 13:16:53 -04:00
Matthias Clasen
9843515736
gl: Reshuffle some code
...
Just rearrange the cases in this switch, no effective change.
2020-09-04 13:16:11 -04:00
Timm Bäder
2bff84ca6c
gl: Adjust blur radius_multiplier
...
2.0 Looks much closer to what my browser does.
Fixes #2777
2020-08-29 16:46:25 +02:00
Matthias Clasen
125ed52ccb
Merge branch 'new-sysprof' into 'master'
...
Port profiling to sysprof-collector api
See merge request GNOME/gtk!2457
2020-08-21 23:58:09 +00:00
Matthias Clasen
d4e069a629
Port tracing to the sysprof collector api
...
Use the new sysprof collector api to do tracing.
2020-08-21 10:55:01 -04:00
Björn Daase
6315cd977c
*: Fix spelling mistakes found by codespell
2020-08-21 15:29:34 +02:00
Matthias Clasen
6ab13a6303
gsk: Don't the always_inline function attribute
...
Visual C doesn't understand it, and the compiler
should know better, anyway.
2020-07-31 13:13:46 -04:00
Timm Bäder
ac1f242b6c
gl renderer: Throw inset shadows with all !send values away
2020-07-28 05:34:12 +02:00
Timm Bäder
ebbb729aea
gl renderer: Linear gradient state tracking
2020-07-28 05:34:12 +02:00
Timm Bäder
dded144313
gl renderer: Assert that we have program state
...
This is never a problem in reality, just for static analysis.
2020-07-28 05:34:12 +02:00
Timm Bäder
3f59566729
gl renderer: Repat node child bounds can't be NULL
2020-07-28 05:34:12 +02:00
Timm Bäder
e0420bae09
gl renderer: Remove dead code
...
We aren't using n_corners anyway
2020-07-28 05:34:12 +02:00
Timm Bäder
9cdf9847c2
gl: Add a gdk_gl_context_has_debug accessor
...
Check if the label_object_ etc. functions are gonna do anything at all.
The g_type_name_from_instance calls keep poppoing up in profiles.
2020-07-28 05:34:12 +02:00
Timm Bäder
0ce32cd4b5
gl renderer: Save rectilinearity in clip stack
...
So we don't have to repeatedly call it in pop_clip()
2020-07-28 05:34:12 +02:00
Timm Bäder
5a9b54df96
gl renderer: More color matrix state tracking
2020-07-28 05:34:12 +02:00
Timm Bäder
d7ba281c15
gl renderer: Add contains_rect helper
2020-07-28 05:34:12 +02:00
Timm Bäder
c6c87b97c2
gl renderer: Add own graphene_rect_intersects
2020-07-28 05:34:11 +02:00
Timm Bäder
2fa9dddea6
gsk: Remember border node uniformity
...
Lots of border nodes have all the same width and the same color.
Renderers might be able to simplifty that, so keep an extra bit per
border node.
2020-07-28 05:34:11 +02:00
Timm Bäder
72d4a83af8
gl renderer: Moar state tracking
...
Track what we really need to send for inset shadows, which are used
as a border replacement in many cases.
Fishbowl says I can draw around 200-300 more switches per frame like
this too.
2020-07-28 05:34:11 +02:00
Timm Bäder
fcf502a686
gl renderer: Fix scrolledwindow undershoot rendering
2020-07-28 05:34:11 +02:00
Timm Bäder
37d7ab88dc
gl renderer: Avoid 9-slicing things that can't be
...
The outline needs to be large enough so changing the size of the outline
does not affect the resulting blurred texture.
Fixes #2776
2020-07-17 05:49:11 +02:00
Timm Bäder
6cde64072d
gl renderer: Remove outdated comment
2020-07-17 05:49:11 +02:00
Timm Bäder
6a60b0f591
gl renderer: Try to intersect rounded clips more often
2020-07-17 05:49:11 +02:00
Timm Bäder
339d9f05e4
gl renderer: Remove unused flag
2020-07-17 05:49:11 +02:00
Timm Bäder
34008e6aab
gl renderer: Ignore rounded clip that only increase the clip
...
This fixes the widget factory rendering too much.
In the widget-factory, we generally have a pretty small update area (two
spinners and a progressbar). We take the extents of that as a update
area and inital clip.
However, the first clip node we see is from the toplevel window, which
essentially increases the clip again to almost the entire window.
Fix that by ignoring such cases.
2020-07-17 05:49:11 +02:00
Timm Bäder
21f9148155
gl renderer: Fix cross-fade nodes with invisible end child
...
Only loading the vertex data doesn't draw anything.
2020-06-27 10:51:06 +02:00
Timm Bäder
d4f0593b37
gl renderer: Handle 0/1 progress in crossfade nodes
2020-06-27 10:51:06 +02:00
Timm Bäder
d5bf3c2cd1
gl renderer: Improve clipping code
...
don't render a clip to a texture if the new clip does not intersect with
any of the corners of the currently rounded clip.
Fixes #2770
2020-05-24 15:59:05 +02:00
Timm Bäder
094788f1a3
gl renderer: Refactor render_clipped_child
2020-05-24 15:59:05 +02:00
Timm Bäder
23e68c0988
gl renderer: Cache whether clips is rectilinear
2020-05-24 15:59:05 +02:00
Timm Bäder
930d779eb3
gl renderer: don't pretend all transform nodes support being transformed
...
It doesn't work in the general case. The transform handling could use a
general overhaul though.
Fixes #2773
2020-05-22 21:29:10 +02:00
Timm Bäder
f3ca814f3d
gl renderer: Fix some off-by-one and rounding errors in the shadow code
...
Take 24
Fixes #2759
2020-05-22 21:29:10 +02:00
Timm Bäder
1aa86d23f4
gl renderer: Fix blurred outset shadow slicing
...
Take 23.
Fixes #2759
2020-05-21 15:32:12 +02:00
Timm Bäder
01c0acb707
gl renderer: Apply scaled clip when rendering offscreen clipped child
2020-05-17 15:30:28 +02:00
Timm Bäder
007de568c9
gl renderer: Fix an uninitialized value
2020-05-17 08:07:11 +02:00
Timm Bäder
b9ed957af3
gl renderer: Fix nested rounded clip rendering
...
If the inner clip intersects with the corners of the outer clip, we
potentially need a texture. We should add more fine-grained checks for
this in the future though.
Test case included.
2020-05-13 08:07:55 +02:00
Timm Bäder
b98ad549c2
gl renderer: Only destroy shader programs with ids > 0
...
We may return -1 as an error return value.
2020-05-10 09:30:15 +02:00
Matthias Clasen
c920796967
gsk: Fall back to cairo if compiling shaders fails
...
There was already some fallback in place here, but
in other places we were just asserting.
2020-04-17 13:42:33 -04:00
Emmanuele Bassi
d701a89281
Turn GskRenderNode into a derivable type
...
Language bindings—especially ones based on introspection—cannot deal
with custom type hiearchies. Luckily for us, GType has a derivable type
with low overhead: GTypeInstance.
By turning GskRenderNode into a GTypeInstance, and creating derived
types for each class of node, we can provide an introspectable API to
our non-C API consumers, with no functional change to the C API itself.
2020-04-08 15:40:15 +01:00
Benjamin Otte
e356d59a92
build: Add -Wnull-dereference
...
Sprinkle various g_assert() around the code where gcc cannot figure out
on its own that a variable is not NULL and too much refactoring would be
needed to make it do that.
Also fix usage of g_assert_nonnull(x) to use g_assert(x) because the
first is not marked as G_GNUC_NORETURN because of course GTester
supports not aborting on aborts.
2020-03-05 08:14:37 +01:00