Timm Bäder
df5e796d99
gl renderer: Refactor blurred shadow drawing code
...
We already have various load_vertex_data* code, so try to reuse that
here.
2020-11-02 14:55:14 -05:00
Timm Bäder
d3239c953d
gl renderer: Nine-slice unblurred outset shadows
...
See #3284
2020-11-02 14:55:13 -05:00
Timm Bäder
9109dee072
gl renderer: Don't use blur node bounds
...
The blur node bounds are different/larger than the ones we use. This
made the textures get stretched to the blur node bounds.
Fixes #3282
2020-10-22 17:46:34 +02:00
Timm Bäder
b6a843a05b
gl renderer: Fix two scale_x/y mixups
2020-10-22 17:46:34 +02:00
Timm Bäder
07fb33c033
gl renderer: Fix private function name
...
It's a GskGLRenderer, not a GskGLRender
2020-10-14 15:06:12 -04:00
Timm Bäder
1fe7043be4
gl renderer: Add more scale_x/scale_y code
...
We really need all of this to be aware of both dimensions of course...
2020-10-14 15:06:12 -04:00
Timm Bäder
0a4d442849
gl renderer: return empty texture for too small blurred nodes
2020-10-14 15:06:12 -04:00
Timm Bäder
5f9fa13c65
gl renderer: Use op builder to render flipped texture
...
Otherwise, we don't know about the uniform state
2020-10-14 15:06:12 -04:00
Timm Bäder
161b171004
gl renderer: Remove unused parameter
2020-10-14 15:06:12 -04:00
Timm Bäder
eb345cd033
gl renderer: Use nearest filtering for textures in render_texture()
...
Makes the output in the node editor a bit more bearable.
2020-10-14 15:06:12 -04:00
Timm Bäder
4735c27e69
gl renderer: Avoid some code duplication
2020-10-14 15:06:12 -04:00
Timm Bäder
44f10c5861
gl renderer: Flip texture in render_texture()
2020-10-14 15:06:12 -04:00
Timm Bäder
ddcff9eb0f
gl renderer: simplify ->render() implementation a bit
...
We already use self->scale_factor when initialized whole_surface,
so set self->scale_factor first.
2020-10-14 15:06:12 -04:00
Timm Bäder
7bf858b9d0
gl renderer: Add a helper to setup projection matrix
2020-10-14 15:06:12 -04:00
Timm Bäder
bc034d1190
gl renderer: Ignore rendering if accumulated opacity is too small
2020-10-14 15:06:12 -04:00
Alexander Larsson
24a27ba44f
gl renderer: Fix up texture cache key
...
The commit e14d2be1
forgot to actually set the parent_rect in the texture
key in the case it is necessary.
2020-10-05 15:43:04 +02:00
Matthias Clasen
dc3b140fd7
Cosmetics
2020-10-01 13:48:24 -04:00
Alexander Larsson
e14d2be1e8
gl renderer: Fix render node texture cache
...
We're caching two things, either a node itself being rendered, or a
parent storing a cached version of a child as rendered to an offscreen
the size and location of the parent.
If both the parent and child uses the cache this will cause a conflict in
the cache as it is currently use keying of a node pointer which will have
the same value for the node-as-itself and the child-node-of-the-parent.
We fix this by adding another part to the key "pointer_is_child" which means
we can have the same node pointer twice in the cache.
Additionally, in the child-is-rendered-offscreen case the offscreen
result actually depends on the position and size of the parent viewport,
so we need to store the parent bounds in that case.
2020-09-30 14:53:13 +02:00
Alexander Larsson
4d697283ae
Support GLShaderNode in backends
...
For vulkan/broadway this just means to ignore it, but for the gl
backend we support (with up to 4 texture inputs, which is similar to
what shadertoy does, so should be widely supported).
2020-09-29 09:51:16 +02:00
Alexander Larsson
6887d0ce24
glrenderer: Move ProgramState into Program
...
There is no real reason to have this on the side indexed via the
index, as it is stored next to each other anyway. Plus, storing them
together lets use use `Program` structures not in the array.
2020-09-29 09:51:10 +02:00
Matthias Clasen
c9f6a9f7c5
Merge branch 'gles-texture-colors' into 'master'
...
Fix uploads of textures in GLES (and make texture uploads better)
See merge request GNOME/gtk!2616
2020-09-25 14:53:19 +00:00
Alexander Larsson
90fc671ef8
gl backend: Avoid roundtripping via surface when updloading
...
Do custom uploads rather than using gdk_cairo_surface_upload_to_gl(),
because this way we avoids a roundtrip (memcpy and possibly conversion)
to the cairo image surface format.
2020-09-25 10:04:48 +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
ebbb729aea
gl renderer: Linear gradient state tracking
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
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