Matthias Clasen
3a0152b65f
gl: Respect clip wehn drawing scale nodes
...
Use the same approach and only create an offscreen
that is big enough for the clipped part of the scaled
texture.
If the clipped part is still too large for a single
texture, we give up and just render the texture without
filters (using the regular texture rendering code path
which supports slicing).
The following commit will add the texture-scale-magnify-10000x
test which fails without this fix.
2023-03-03 11:32:08 -06:00
Benjamin Otte
22ba6b1f33
rendernode: Respect clip when drawing scale nodes
...
Scale nodes can use large scale factors and we don't want to create
insanely huge Cairo surfaces.
A subsequent commit will add the texture-scale-magnify-10000x
test which fails without this fix.
2023-03-03 11:31:31 -06:00
Benjamin Otte
718b5d5fe7
rendernode: Clarify some Cairo stuff
...
Split out a function to make it more obvious what's going on.
2023-03-03 11:24:46 -06:00
Benjamin Otte
88dd64551c
rendernode: Don't do unnecessary stuff
...
Cairo surfaces are created transparent.
And even if they weren't, overdrawing with transparency wouldn't erase
what's in the surface because it's a no-op.
It would require CAIRO_OPERATOR_CLEAR or CAIRO_OPERATOR_SOURCE.
2023-03-03 11:24:46 -06:00
Sebastian Dröge
323ba14dde
Fix self-(type)
annotations for TextureScaleNode
methods
2023-02-19 19:00:34 +02:00
Sebastian Dröge
ca93512106
Add two missing Since
markers
2023-02-19 11:18:15 +02:00
Matthias Clasen
0b4d41698b
mask: Fix glsl
2023-02-17 06:26:42 -05:00
Matthias Clasen
351abadee7
Make make not fallback match GL
...
We were not handling the inverted-luminance
case the same way, and it caused a test to
fail. Yay for tests.
2023-02-14 21:47:54 -05:00
Matthias Clasen
951db28f71
rendernodeparser: Fix mask mode handling
...
I had forgotten inverted-luminance, and also
to print an error.
2023-02-14 21:01:12 -05:00
Benjamin Otte
40e7a265a7
rendernodeparser: Print an error when failing to parse an enum
2023-02-14 21:01:12 -05:00
Matthias Clasen
9a539cec57
Merge branch 'mask-modes' into 'main'
...
Make mask nodes more versatile
See merge request GNOME/gtk!5521
2023-02-15 00:57:17 +00:00
Matthias Clasen
0eb791eaaa
Make mask nodes more versatile
...
Add a GskMaskMode enumeration and implement it
in the GL and cairo renderers.
2023-02-14 19:07:01 -05:00
Benjamin Otte
774696011d
glrenderer: Use GdkTexureDownloader
2023-02-15 00:39:18 +01:00
Benjamin Otte
c9f54ca371
texture: Export gdk_texture_get_format()
...
The API docs outline why quite well.
This should make it possible to do saving of textures to image files
without any private API with the same featureset that GTK uses.
Also remove the gsktextureprivate.h include where
gdk_texture_get_format() was the only reason for it.
2023-02-15 00:39:18 +01:00
Sebastian Dröge
a252aadadf
gsk: Move new 4.10 GskRenderNodeType
s to the end instead of inserting them in the middle
2023-02-14 21:04:41 +02:00
Kjell Ahlstedt
869ab1cd1b
gskglrenderjob: Fix compilation with clang
2023-02-14 10:29:25 +01:00
Matthias Clasen
d3dfdd214f
gl: Avoid a crash in the texture library
...
entry->texture can be NULL, so check before
using it.
Fixes : #5175
2023-02-12 10:01:11 -05:00
Matthias Clasen
b6c3cf4eee
gl: Maintain state when truncating
...
When we truncate the command queue because it
is too big, we were messing up our state accounting
and running into criticals as a consequence.
This can be reproduced by opening a well-populated
fishbowl demo in the inspectors recorder.
Fixes : #5188
2023-02-12 09:56:32 -05:00
Matthias Clasen
a9f50f1f7a
gl: Support mask nodes
...
Add a shader for masking.
2023-02-12 08:35:25 -05:00
Matthias Clasen
0d58e5365d
gsk: Introduce mask nodes
...
Add GskMaskNode, and support it in the render node
parser, in the inspector and in GtkSnapshot.
The rendering is just fallback for now.
Based on old work by Timm Bäder.
2023-02-12 08:35:25 -05:00
Matthias Clasen
d916659781
gl: Handle GskTextureScaleNodes
2023-02-11 15:09:38 -05:00
Matthias Clasen
82c02574f1
gl: Make texture slicing more flexible
...
Allow to specify the filtering to use for the slices,
and allow forcing the number of slices. This will be
used in the next commit.
2023-02-11 15:09:38 -05:00
Matthias Clasen
26e6d2106b
gl: Pass filters down from visit_texture_node
...
For now, we always pass GL_LINEAR.
2023-02-11 15:09:38 -05:00
Matthias Clasen
dc3a72cf38
nodeparser: Support texture-scale nodes
2023-02-11 15:09:38 -05:00
Matthias Clasen
b937c19dd4
gsk: Introduce GskTextureScaleNode
2023-02-11 15:09:38 -05:00
Matthias Clasen
cc43f5dcde
gsk: Generate mipmaps when requested
...
If the min_filter requires it, call
glGenerateMipmap for our textures.
2023-02-11 09:29:03 -05:00
Matthias Clasen
c74d7afce5
gsk: Don't limit filters too much
...
GL does not allow mipmapping for mag filters,
but it doesn't have a problem with it for min
filters.
2023-02-11 09:29:03 -05:00
Matthias Clasen
c0b5b4b8c1
gskrendernodeimpl.c: Use folding
...
Instead of homegrown markup.
2023-02-11 09:00:07 -05:00
Matthias Clasen
1da4782262
gsk: Fix a compiler warning
2023-02-02 17:15:28 +01:00
Matthias Clasen
c43e1f3d0a
gsk: Quiet a compiler warning
2023-01-28 21:13:10 -05:00
Christian Hergert
fb12ad807a
gsk/gl: fix warning when join_sources() is unused
2023-01-12 13:22:25 -08:00
Matthias Clasen
46e0fde606
css: Avoid more allocations for tokens
...
Make short string tokens static.
2023-01-12 00:12:09 -05:00
Carlos Garnacho
b9448b06b4
gsk: Extend the blur radius for outset shadow extents
...
By dividing the blur radius to obtain the clip radius, we may end up
with halved values that result in an overshunk clip mask. Extend this
so that we ensure to cover the last pixel.
Fixes artifacts seen with the cairo renderer in X11 when resizing
windows horizontally, a black 1px high line would be seen in the
top of the window due to these outset bounds being used in clipping.
More mysteriously, also seems to fix resize lag in the GL renderer
(also X11), if e.g. the bottom-right corner of a window is resized
diagonally in bottom-left -> top-right direction, or
bottom-right -> top-left.
Related: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2175#note_1599335
2022-11-23 19:27:49 +01:00
Carlos Garnacho
35744d87a2
gsk: Also ceil() top side when converting graphene to cairo rectangles
...
The outset border for all sides is ceil()ed, except for the top side.
Most often values are already nicely rounded here, but this seems an
oversight.
2022-11-23 18:56:45 +01:00
Matthias Clasen
b441c684ab
gsk: Avoid a crash with negative scales
...
Don't crash when both scale_x and scale_y are -1.
A test is included.
2022-11-20 12:13:02 -05:00
Matthias Clasen
ce57150203
gsk: Add an assertion to help static analysis
...
clang gets wild ideas about negative radii otherwise.
2022-11-18 00:04:23 -05:00
Matthias Clasen
b12d31d189
Fix spelling errors
...
These were pointed out by codespell.
2022-11-17 22:49:45 -05:00
Matthias Clasen
4aabc45685
Drop gdkintl.h
...
This header was merely including gi18n-lib.h.
Just do that directly.
2022-09-23 23:33:42 -04:00
Matthias Clasen
a8af7caae1
Rename gdk-private.h to gdkprivate.h
...
The extra - does not add any value.
2022-09-23 23:23:27 -04:00
Matthias Clasen
c24a69549d
Rename gdkdebug.h to gdkdebugprivate.h
...
This is the naming convention for private headers.
2022-09-23 23:12:01 -04:00
Matthias Clasen
3688ece655
gsk: Dissolve gsk-autocleanup.h
...
Move the autocleanup declarations into their
respective headers.
2022-09-23 19:50:09 -04:00
Matthias Clasen
f33f55bcbb
gtk: Use the new debug macros
2022-09-23 18:12:39 -04:00
Matthias Clasen
8a4fd30797
gsk: drop old debug macros
...
These are no longer used.
2022-09-23 18:11:48 -04:00
Matthias Clasen
9818ec4ad9
gsk: Use the new debug macros
2022-09-23 18:11:48 -04:00
Matthias Clasen
4d08eb264d
gsk: Introduce new debug macros
...
Introduce GSK_RENDERER_DEBUG() and GSK_DEBUG(), which
mirror the new macros in gdk. They use the same helper
function gdk_debug_message().
2022-09-23 18:11:48 -04:00
Matthias Clasen
511a4ec475
gsk: Make glyph upload more similar to icons
...
When uploading glyphs to the atlas, clear
the padding bytes so that no dirt remains there.
2022-09-10 15:25:59 -04:00
Luca Bacci
bcccb46b7c
GL Renderer: Ensure that GdkGLContext is current in gsk_gl_driver_shader_weak_cb
...
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5140
2022-08-27 13:58:17 +02:00
Sebastian Dröge
0cc2d5559b
Mark gsk_rounded_clip_node_new() return value as (transfer full)
...
Like all the other constructors for nodes already do. Without this,
newly created rounded clip nodes are leaked in bindings.
2022-08-10 11:07:51 +03:00
Matthias Clasen
a4c6517d06
glshader: Add preconditions
...
Add preconditions to many of the glshader
uniform apis.
2022-07-15 15:47:11 -04:00
Matthias Clasen
7ebc5454f4
Drop an unused function
2022-07-15 15:47:11 -04:00