Benjamin Otte
c37171f4d6
vulkan: Pass values to push directly
...
Don't require a GskVulkanPushConstants there.
2023-06-04 19:42:01 +02:00
Benjamin Otte
c479f93372
vulkan: Add a static assert
...
We don't want to make the push constants larger than what the spec
guarantees. And that is 128 bytes, see value for
maxPushConstantsSize in table 55 of
https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#limits-minmax
2023-06-04 19:42:01 +02:00
Benjamin Otte
186e056c56
vulkan: Handle clip properly for offscreens
...
This was broken in the last commit.
2023-06-04 19:42:01 +02:00
Benjamin Otte
d8b9c3ae96
vulkan: Track offset in the renderpass
...
This avoids emitting lots of push constant updates as most of the
transforms we have are simple translations to adjust drawing for the
next widget.
2023-06-04 19:42:01 +02:00
Benjamin Otte
5de6f12e88
vulkan: Pass scale to offscreens
...
Create offscreens with enough pixels for the given scale and ensure
the scale is passed on.
This improves text rendering on offscreens quite a bit.
2023-06-04 19:42:01 +02:00
Benjamin Otte
5422c12577
vulkan: Clean up scale handling
...
1. Use a graphene_vec2_t
2. Ensure it's always positive
3. Don't break with fallback
The scale value is nothing more than an indication of how many pixels to
assume per unit of a node.
2023-06-04 19:42:01 +02:00
Benjamin Otte
bb145b9bc1
vulkan: Fix typo
2023-06-04 19:42:01 +02:00
Benjamin Otte
a55fda0b49
vulkan: Don't store unused matrices
...
We can compute it when needed, so do that.
2023-06-04 19:42:01 +02:00
Benjamin Otte
5b93a32f90
vulkan: Remove unneeded argument
...
The initial matrix can be computed as needed, so we don't need to
precompute it.
2023-06-04 19:42:01 +02:00
Benjamin Otte
495ee1be3d
vulkan: Don't explode without vertex data
...
If no buffer has any vertex data (read: if nothing gets drawn), don't
try to allocate a 0 bytes buffer.
2023-06-04 19:42:01 +02:00
Benjamin Otte
7f1bd1f047
vulkan: Handle empty child bounds in repeat node
...
Also add test to the testsuite for it.
2023-06-04 19:42:01 +02:00
Benjamin Otte
da147dca92
vulkan: Fix repeat nodes
2023-06-04 19:42:01 +02:00
Benjamin Otte
8ba5ff98aa
vulkan: Don't transform the viewport rect
...
We don't want to render the offscreen trnsformed, we want to render it
as-is.
We lose the correct scale factor, but that requires some separate work,
so for now it gets a bit blurry on hidpi.
2023-06-04 19:42:01 +02:00
Benjamin Otte
34f4493c36
vulkan: Make quarks global variables
...
I don't want to ensure there's a RenderPass available everywhere and
recreate the quarks in each, I just want to use them.
2023-06-04 19:42:01 +02:00
Benjamin Otte
314923d4b5
vulkan: Split out a function
...
We can now create offscreens explicitly.
2023-06-04 19:42:00 +02:00
Benjamin Otte
d2f45dae96
vulkan: offscreens are used as color attachments
...
... so set the corresponding flag.
Also name the function "new_for_offscreen()" because thats what this
function is about, "texture" is ambiguous.
2023-06-04 19:42:00 +02:00
Benjamin Otte
0e31cf9542
vulkan: compute new modelview directly
...
no need to go through a GskTransform
2023-06-04 19:42:00 +02:00
Benjamin Otte
af901a10e3
vulkan: Make border shader handle fractional widths
...
We were rounding widths properly, make sure we always round up.
2023-06-04 19:42:00 +02:00
Benjamin Otte
3d1a607367
vulkan: Don't round corners when growing rounded rect
...
If the corner is set to 0, keep it there.
2023-06-04 19:42:00 +02:00
Benjamin Otte
1be21a33d9
vulkan: Rewrite rounded rectangle to use SDF distance
...
We can use this to properly compute distance in scaled situations.
We also now compute coverage with (imperfect) antialiasing.
2023-06-04 19:42:00 +02:00
Benjamin Otte
64bcdb713c
vulkan: Start rework on shaders to allow antialiased drawing
...
This introduces the rect object and adds a rect_distance() and
rect_coverage() function.
_distance() returns the signed distance tp the rectangle.
_coverage() returns the coverage of a pixel centered at that position.
Note that the pixel size is computed using dFdx/dFdy.
2023-06-04 19:42:00 +02:00
Benjamin Otte
4a868736f9
vulkan: Render whole texture
...
When the node bounds were a non-integer size, the texture would get
ceil()ed pixels, but various viewport or scissor computations might
floor() instead, leaving the right/bottom row of pixels untouched.
Make sure those functions ceil(), too.
2023-06-04 19:42:00 +02:00
Benjamin Otte
cfeaa0ac72
renderer: return_if_fail() if the given texture size is 0
...
All renderers SEGV currently when that happens.
2023-06-04 19:42:00 +02:00
Matthias Clasen
444d5fa500
Merge branch 'drop-x11-dnd-keynav' into 'main'
...
x11: Stop using passive grabs
See merge request GNOME/gtk!6055
2023-06-03 19:38:24 +00:00
Matthias Clasen
c380d17621
Revert "gdk/x11: Also grab keyboard during XDnD grabs"
...
This reverts commit ae94417f80
.
2023-06-03 12:25:25 -04:00
Matthias Clasen
686d18dfc2
x11: Stop using passive grabs
...
The keynav that this implements is half-broken under
xwayland anyway, and it confused and complicates things
on the compositor side.
2023-06-03 12:25:25 -04:00
Benjamin Otte
0a1702ae99
Merge branch 'wip/otte/fix-glx' into 'main'
...
glx: Trap errors inside loop
Closes #5857
See merge request GNOME/gtk!6056
2023-06-03 16:19:09 +00:00
Benjamin Otte
0016fea36b
glx: Trap errors inside loop
...
Instead of trapping errors for the whole loop trying to create GL
contexts, trap them once per GL context.
Apparently GLX does throw an error when a too high version is requested
and doesn't just return NULL and then that error lingers when we try
lower versions.
Fixes #5857
2023-06-03 18:03:56 +02:00
Matthias Clasen
7ef46293aa
Merge branch 'wip/antoniof/boxlayout-baseline-optional' into 'main'
...
boxlayout: Don't always reserve height for baseline alignment
Closes #5863
See merge request GNOME/gtk!6053
2023-06-03 11:01:40 +00:00
António Fernandes
6b59c138b2
boxlayout: Don't always reserve height for baseline alignment
...
Otherwise an horizontal box may have a larger minumum height than
any of its children even though non of them is baseline-aligned.
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5863
2023-06-02 20:18:56 +01:00
Matthias Clasen
c8c895d160
Merge branch 'trap-bad-rr-errors' into 'main'
...
x11: Trap XRandr errors when getting outputs during init and update
See merge request GNOME/gtk!6046
2023-06-02 11:31:45 +00:00
Luca Bacci
acbd7f212e
Merge branch 'for-main' into 'main'
...
GdkWin32 Cleanup
See merge request GNOME/gtk!5714
2023-06-02 09:34:48 +00:00
Marco Trevisan (Treviño)
f2a2889153
x11: Trap XRandr errors when getting outputs during init and update
...
We may try to update the XRR outputs and Crtcs when they're changing in
the server, and so we may get BadRROutput that we're currently not
handling properly.
As per this, use traps and check whether we got errors, and if we did
let's ignore the current output.
It's not required to call init_randr13() again because if we got errors
it's very likely that there's a change coming that will be notified at
next iteration during which we'll repeat the init actions.
2023-06-02 00:30:14 +02:00
Matthias Clasen
a4ae215309
Merge branch 'sumibi-yakitori/fix-glcontext-macos' into 'main'
...
macOS: Fix problems with OpenGL context creation on macOS
Closes #5811
See merge request GNOME/gtk!6044
2023-06-01 20:58:22 +00:00
Daniel Boles
fa16ba12cf
Window: Copy caveats from :*visible to the setters
2023-06-01 20:31:22 +01:00
Daniel Boles
ec2421b187
Window: Fix wrong case in property attribute which
...
rendered the literal text `org.gtk.MEthod.set_property focus-visible`.
2023-06-01 20:26:57 +01:00
sumibi-yakitori
1fce2b1e06
Fix an issue where min_version
was not being used as the minimum version required by GTK
2023-06-01 23:05:44 +09:00
Matthias Clasen
38bf843de8
Merge branch 'wip/alice/muxer-fix' into 'main'
...
actionmuxer: Correctly notify actions after reparenting
Closes #5861
See merge request GNOME/gtk!6043
2023-06-01 10:54:33 +00:00
sumibi-yakitori
7b8a5235d4
Fix a bug in error checking conditions. This avoids unintentional Legacy
of the created OpenGL context
2023-06-01 16:46:24 +09:00
sumibi-yakitori
3c9b3ead6f
The GL version reported by epoxy seems to depend on the current GL context, so the GL context to create should be the one determined by gdk_gl_context_get_matching_version
2023-06-01 16:43:57 +09:00
Alice Mikhaylenko
1549ec5f9b
actionmuxer: Correctly notify actions after reparenting
...
When registering an observer, we send a notification and for that we need
to query the action's state and param type. When setting up a muxer parent,
same thing happens, except the action is queried on the parent instead.
This means that the muxer will notify observers about the parent's actions,
but not about its own.
Add a test to verify it works.
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5861
2023-06-01 06:39:44 +04:00
Matthias Clasen
4339e8e464
Merge branch 'matthiasc/for-main' into 'main'
...
gsk: Support straight alpha textures
See merge request GNOME/gtk!6041
2023-05-31 19:14:07 +00:00
Matthias Clasen
39f4d5ccf7
gltexturebuilder: Update the docs
...
We do handle unpremultiplied alpha correctly (albeit
non-optimally) now.
2023-05-31 14:39:07 -04:00
Matthias Clasen
957fa87fce
gsk: Support straight alpha textures
...
This is not the optimal way of doing it: we're
reuploading the texture with client-side conversion.
But it fits nicely into our current handling of mipmaps.
We can do better once we use shaders for colorspace
conversions.
2023-05-31 14:37:33 -04:00
Matthias Clasen
e8bdd46d8d
Merge branch 'a11y-crash' into 'main'
...
label: Fix crashes when executing a11y actions
See merge request GNOME/gtk!6034
2023-05-31 12:27:49 +00:00
Erik Schilling
d03b27b441
label: Fix crashes when executing a11y actions
2023-05-31 12:27:48 +00:00
Matthias Clasen
f4cbe26af3
Merge branch 'more-texture-tests' into 'main'
...
testsuite: Add more download tests
See merge request GNOME/gtk!6038
2023-05-31 12:01:31 +00:00
Luca Bacci
24af4b48cc
GdkWin32: Remove unused functions
2023-05-31 12:15:57 +02:00
Luca Bacci
1c8caf745f
GdkWin32: Remove declarations of unused types from gdkprivate-win32.h
2023-05-31 12:15:57 +02:00
Luca Bacci
395d80f131
GdkWin32: Remove declarations of unexisting functions from gdkprivate-win32.h
2023-05-31 12:15:57 +02:00