gtk4.git
2 years agoAdd a single test runner
Emmanuele Bassi [Sun, 30 Jul 2023 10:29:36 +0000 (13:29 +0300)]
Add a single test runner

Running the whole test suite is not fun, and the magic incantations for
running a specific backend are too complicated to remember.

2 years agolabel: Let Pango align the layout
Emmanuele Bassi [Sun, 30 Jul 2023 10:26:27 +0000 (13:26 +0300)]
label: Let Pango align the layout

Just like GtkInscription does since commit 883011f2. The layout offsets
are maintained as floats, and only converted to integers when exposing
them to callers.

2 years agoFix indentation in GtkInscription
Emmanuele Bassi [Sat, 29 Jul 2023 11:51:37 +0000 (14:51 +0300)]
Fix indentation in GtkInscription

2 years agoEnable subpixel positioning for text only on high scaling factors
Emmanuele Bassi [Mon, 17 Jul 2023 11:24:27 +0000 (12:24 +0100)]
Enable subpixel positioning for text only on high scaling factors

With our current font rendering stack, subpixel positioning simply does
not look good on non-HiDPI displays compared to font hinting.

While we have a setting as a way to restore font hinting, it's fairly
clunky to use with sandboxed applications, since it requires injecting a
settings.ini file in every application's configuration directory, or
adding the user's own configuration directory into the sandbox.

As a workaround, we can check the scaling factor used by GTK, and only
enable subpixel positioning if the factor is greater than one.

2 years agoUpdate Persian translation
Danial Behzadi [Sat, 29 Jul 2023 01:58:52 +0000 (01:58 +0000)]
Update Persian translation

2 years agoUpdate Ukrainian translation
Yuri Chornoivan [Fri, 28 Jul 2023 17:32:38 +0000 (17:32 +0000)]
Update Ukrainian translation

2 years agoUpdate Ukrainian translation
Yuri Chornoivan [Fri, 28 Jul 2023 17:31:22 +0000 (17:31 +0000)]
Update Ukrainian translation

2 years agoMerge branch 'matthiasc/for-main' into 'main'
Matthias Clasen [Fri, 28 Jul 2023 08:51:14 +0000 (08:51 +0000)]
Merge branch 'matthiasc/for-main' into 'main'

glyph cache: Add debug output

See merge request GNOME/gtk!6163

2 years agoMerge branch 'dboles/issue5946' into 'main'
Matthias Clasen [Fri, 28 Jul 2023 08:47:33 +0000 (08:47 +0000)]
Merge branch 'dboles/issue5946' into 'main'

MenuSectionBox: use-markup on labels of submenus

Closes #5946

See merge request GNOME/gtk!6209

2 years agoUpdate Hebrew translation
Yosef Or Boczko [Fri, 28 Jul 2023 07:13:47 +0000 (07:13 +0000)]
Update Hebrew translation

2 years agoMerge branch 'fix-issue-5775-gtk4' into 'main'
Matthias Clasen [Fri, 28 Jul 2023 07:11:52 +0000 (07:11 +0000)]
Merge branch 'fix-issue-5775-gtk4' into 'main'

GtkApplicationImplDBus: Cancel DBus method calls on shutdown

Closes #5775

See merge request GNOME/gtk!6181

2 years agoMerge branch 'dboles/range_highlight_with_page_size' into 'main'
Matthias Clasen [Fri, 28 Jul 2023 06:13:27 +0000 (06:13 +0000)]
Merge branch 'dboles/range_highlight_with_page_size' into 'main'

Range: Fix hilight not drawn to value if page-size

Closes #5976

See merge request GNOME/gtk!6206

2 years agobuild: Check for objcopy options
Matthias Clasen [Fri, 28 Jul 2023 06:05:03 +0000 (09:05 +0300)]
build: Check for objcopy options

Check that objcopy understands the --set-section-alignment
option that we are now using.

2 years agotools: Update the docs
Matthias Clasen [Thu, 27 Jul 2023 20:36:53 +0000 (23:36 +0300)]
tools: Update the docs

Mention that the render command can produce png or tiff
images.

2 years agorendernode-tool: Save to tiff
Benjamin Otte [Wed, 26 Jul 2023 21:30:34 +0000 (23:30 +0200)]
rendernode-tool: Save to tiff

If the save filename ends in .tiff, save to tiff instead.

For now this is a sneaky autodetect feature, not sure if/how to make it
more explicit.

2 years agoci: Mark the clipboard test as flaky
Matthias Clasen [Sun, 2 Jul 2023 14:13:14 +0000 (10:13 -0400)]
ci: Mark the clipboard test as flaky

Lets give up on trying to run this successfully
in ci. More green in more places!

2 years agoglyph cache: Add debug output
Matthias Clasen [Sun, 2 Jul 2023 02:31:28 +0000 (22:31 -0400)]
glyph cache: Add debug output

Show the size of data uploaded per glyph.

2 years agogdk: Build fix
Matthias Clasen [Thu, 27 Jul 2023 19:37:36 +0000 (22:37 +0300)]
gdk: Build fix

2 years agoMerge branch 'wip/chergert/fix-objcopy' into 'main'
Matthias Clasen [Fri, 28 Jul 2023 06:01:43 +0000 (06:01 +0000)]
Merge branch 'wip/chergert/fix-objcopy' into 'main'

demo: use --set-section-alignment when using objcopy

See merge request GNOME/gtk!6218

2 years agoUpdate Georgian translation
Ekaterine Papava [Fri, 28 Jul 2023 04:48:23 +0000 (04:48 +0000)]
Update Georgian translation

2 years agodemo: use --set-section-alignment when using objcopy
Christian Hergert [Fri, 28 Jul 2023 00:09:02 +0000 (17:09 -0700)]
demo: use --set-section-alignment when using objcopy

If we don't set the alignment then there is a chance that it ends up
commonly on a 4-byte boundary and GResources will have to malloc/memcpy
the static data.

With --set-section-alignment (which takes a byte offset not ^2) available
in objcopy >= 2.33 we ensure that expectation is met.

2 years agoMerge branch 'zbrown/fix-inspector' into 'main'
Matthias Clasen [Thu, 27 Jul 2023 20:55:24 +0000 (20:55 +0000)]
Merge branch 'zbrown/fix-inspector' into 'main'

inspector: drop overlooked reference

See merge request GNOME/gtk!6215

2 years agoMerge branch 'wip/chergert/fix-inspector' into 'main'
Matthias Clasen [Wed, 26 Jul 2023 20:16:35 +0000 (20:16 +0000)]
Merge branch 'wip/chergert/fix-inspector' into 'main'

inspector: fix runtime errors with missing widgets

Closes #5986

See merge request GNOME/gtk!6217

2 years agoinspector: fix runtime errors with missing widgets
Christian Hergert [Wed, 26 Jul 2023 19:15:21 +0000 (12:15 -0700)]
inspector: fix runtime errors with missing widgets

Fixes #5986

2 years agoMerge branch 'alatiera/doc-links' into 'main'
Matthias Clasen [Wed, 26 Jul 2023 12:55:31 +0000 (12:55 +0000)]
Merge branch 'alatiera/doc-links' into 'main'

docs: getting_started: Update links to some guides

See merge request GNOME/gtk!6216

2 years agodocs: getting_started: Update links to some guides
Jordan Petridis [Wed, 26 Jul 2023 12:33:15 +0000 (12:33 +0000)]
docs: getting_started: Update links to some guides

2 years agoinspector: drop overlooked reference
Zander Brown [Wed, 26 Jul 2023 05:19:22 +0000 (06:19 +0100)]
inspector: drop overlooked reference

Fix: https://gitlab.gnome.org/GNOME/gtk/-/commit/0751f59ee859030395b4051dcc4584b39e0d7efc

2 years agoMerge branch 'zbrown/pending' into 'main'
Benjamin Otte [Wed, 26 Jul 2023 04:39:13 +0000 (04:39 +0000)]
Merge branch 'zbrown/pending' into 'main'

filterlistmodel: emit ::notify::pending after ::items-changed

See merge request GNOME/gtk!6213

2 years agofilterlistmodel: emit ::notify::pending after ::items-changed
Zander Brown [Wed, 26 Jul 2023 03:57:48 +0000 (04:57 +0100)]
filterlistmodel: emit ::notify::pending after ::items-changed

2 years agoUpdate Hungarian translation
Balázs Meskó [Tue, 25 Jul 2023 23:43:05 +0000 (23:43 +0000)]
Update Hungarian translation

(cherry picked from commit 7a3a82749b751aacc751b747a547d577622c7083)

2 years agoMerge branch 'fix-file-dialog-assert' into 'main'
Matthias Clasen [Mon, 24 Jul 2023 21:52:57 +0000 (21:52 +0000)]
Merge branch 'fix-file-dialog-assert' into 'main'

filedialog: Don't assert too much

Closes #5975

See merge request GNOME/gtk!6207

2 years agoMerge branch 'pgriffis/fix-no-introspection-build' into 'main'
Matthias Clasen [Mon, 24 Jul 2023 21:11:17 +0000 (21:11 +0000)]
Merge branch 'pgriffis/fix-no-introspection-build' into 'main'

build: Fix building with introspection disabled and testsuite enabled

See merge request GNOME/gtk!6210

2 years agobuild: Fix building with introspection disabled and testsuite enabled
Patrick Griffis [Mon, 24 Jul 2023 00:30:30 +0000 (19:30 -0500)]
build: Fix building with introspection disabled and testsuite enabled

The headless tests are written in Python and need g-i.

2 years agoMenuSectionBox: use-markup on labels of submenus
Sébastien Le Roux [Sat, 22 Jul 2023 17:11:00 +0000 (18:11 +0100)]
MenuSectionBox: use-markup on labels of submenus

To use markup label in menu items, when the menu item has a submenu.

Small additions to 'gtk/gtkmenusectionbox.c' to set the markup attribute
for menu items with submenus.

Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/5946
2 years agofiledialog: Don't assert too much
Matthias Clasen [Sun, 23 Jul 2023 16:30:38 +0000 (12:30 -0400)]
filedialog: Don't assert too much

The GtkFileDialog code was asserting that
we get exactly one file back. But the function
is nullable anyway, so lets just return NULL
if we don't have a file.

Fixes: #5975
2 years agoRange: Fix hilight not drawn to value if page-size
Daniel Boles [Sun, 23 Jul 2023 10:11:40 +0000 (11:11 +0100)]
Range: Fix hilight not drawn to value if page-size

If we have a non-zero Adjustment:page-size, the actual amount we draw is
reduced by that page-size. We account for this in various places, but we
did not when deciding how far to allocate the highlight widget, so we
were drawing the highlight not far enough, falling short of the value.
This fixes by subtracting the page-size from the drawn range here too.

Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5976

2 years agoMerge branch 'wip/otte/vulkan-for-main' into 'main'
Benjamin Otte [Sat, 22 Jul 2023 21:48:29 +0000 (21:48 +0000)]
Merge branch 'wip/otte/vulkan-for-main' into 'main'

tools: No need for --force when specifying filename

See merge request GNOME/gtk!6205

2 years agoMerge branch 'drop-touchscreen-debug' into 'main'
Matthias Clasen [Sat, 22 Jul 2023 21:48:14 +0000 (21:48 +0000)]
Merge branch 'drop-touchscreen-debug' into 'main'

Drop GTK_DEBUG_TOUCHSCREEN

Closes #5893

See merge request GNOME/gtk!6204

2 years agovulkan: Clean up renderpass/offscreen creation
Benjamin Otte [Fri, 21 Jul 2023 22:54:03 +0000 (00:54 +0200)]
vulkan: Clean up renderpass/offscreen creation

Instead of scale and whatnot, pass:
1. The image size
2. The viewport to map to that image size
and compute everything else from there.

In particular, we set the Vulkan viewport to the image dimensions
instead of the viewport size.

All of this makes things a lot simpler while keeping the required
functionality.

2 years agovulkan: Plug a memleak
Benjamin Otte [Sat, 22 Jul 2023 21:26:44 +0000 (23:26 +0200)]
vulkan: Plug a memleak

This one was introduced in 4d9e7d30b00.

2 years agovulkan: Plug a memleak
Benjamin Otte [Sat, 22 Jul 2023 21:25:33 +0000 (23:25 +0200)]
vulkan: Plug a memleak

This one was introduced in cd84f5a56ef.

2 years agotools: No need for --force when specifying filename
Benjamin Otte [Sat, 22 Jul 2023 03:21:30 +0000 (05:21 +0200)]
tools: No need for --force when specifying filename

If people specify the filename, they should know what they're doing.

If they don't, abort if the guessed filename already exists and insist
on the user explicitly giving it.

2 years agoDrop GTK_DEBUG_TOUCHSCREEN
Matthias Clasen [Sat, 22 Jul 2023 20:41:39 +0000 (16:41 -0400)]
Drop GTK_DEBUG_TOUCHSCREEN

This flag was never doing much, and is only raising
the wrong expectations. Remove it.

Fixes: #5893
2 years agoMerge branch 'textview-keynav-backspace' into 'main'
Matthias Clasen [Sat, 22 Jul 2023 15:45:42 +0000 (15:45 +0000)]
Merge branch 'textview-keynav-backspace' into 'main'

textview: Match entry behavior for backspace

Closes #3417

See merge request GNOME/gtk!6203

2 years agoMerge branch 'fix-issue-5965' into 'main'
Matthias Clasen [Sat, 22 Jul 2023 13:51:32 +0000 (13:51 +0000)]
Merge branch 'fix-issue-5965' into 'main'

gtktextview: return early when resetting gesture / event controller

Closes #5965

See merge request GNOME/gtk!6200

2 years agotextview: Match entry behavior for backspace
Matthias Clasen [Sat, 22 Jul 2023 13:40:17 +0000 (09:40 -0400)]
textview: Match entry behavior for backspace

As pointed out in #3417, there is a long-standing
difference in how GtkEntry and GtkTextView treat
Ctrl-Shift-Backspace (and other variations): GtkEntry
always operates on the selection first, if it exists.
GtkTextView only handled plain Backspace that way, and
ignores the selection for other variations.

There is no good reason for this difference, so just
remove it and make GtkTextView behave the same as
GtkEntry.

Fixes: #3417
2 years agoUpdate Georgian translation
Ekaterine Papava [Sat, 22 Jul 2023 13:24:50 +0000 (13:24 +0000)]
Update Georgian translation

2 years agoUpdate Vietnamese translation
Ngọc Quân Trần [Sat, 22 Jul 2023 08:54:03 +0000 (08:54 +0000)]
Update Vietnamese translation

2 years agoMerge branch 'dboles/PopoverMenu-png' into 'main'
Daniel Boles [Sat, 22 Jul 2023 08:43:25 +0000 (08:43 +0000)]
Merge branch 'dboles/PopoverMenu-png' into 'main'

Fix broken image menu.png in Gtk.PopoverMenu intro

See merge request GNOME/gtk!6187

2 years agoMerge branch 'dboles/for-main' into 'main'
Daniel Boles [Sat, 22 Jul 2023 08:43:06 +0000 (08:43 +0000)]
Merge branch 'dboles/for-main' into 'main'

tools: Replace references to GTK+ with GTK no plus

See merge request GNOME/gtk!6199

2 years agoUpdate Vietnamese translation
Ngọc Quân Trần [Sat, 22 Jul 2023 08:16:20 +0000 (08:16 +0000)]
Update Vietnamese translation

(cherry picked from commit e944cd89166aa35c290b508057d2269859b27591)

2 years agoMerge branch 'wip/otte/vulkan-for-main' into 'main'
Benjamin Otte [Sat, 22 Jul 2023 02:43:11 +0000 (02:43 +0000)]
Merge branch 'wip/otte/vulkan-for-main' into 'main'

gsk: Add gskrectprivate.h

See merge request GNOME/gtk!6201

2 years agogdk: Add function to query alpha format for depth
Benjamin Otte [Fri, 21 Jul 2023 23:11:19 +0000 (01:11 +0200)]
gdk: Add function to query alpha format for depth

It's meant to be used in renderers.

2 years agogdk: Make A8 and A16 formats premultiplied
Benjamin Otte [Fri, 21 Jul 2023 23:29:24 +0000 (01:29 +0200)]
gdk: Make A8 and A16 formats premultiplied

The relevant question here is about details, because we have to choose
if we declare alpha-only formats as having their (nonexistant) color
channels premultiplied or not, so that the code paths using them can do
the right thing.

Because we are premultiplied by default, it makes sense to treat alpha
like that, because then the alpha-only code doesn't need to do
workarounds for straight alpha.

Where this is relevant of course is when expanding the alpha channel
into color channels, where we want to end up with white.
So make sure we do color = alpha there instead of color = 1 like we did
before.

2 years agomemoryformat: Copy idea from tiff code
Benjamin Otte [Fri, 21 Jul 2023 01:05:40 +0000 (03:05 +0200)]
memoryformat: Copy idea from tiff code

The static assertion makes sure that newer formats get added.

2 years agogdk: Add A16_FLOAT and A32_FLOAT formats
Benjamin Otte [Fri, 21 Jul 2023 01:02:33 +0000 (03:02 +0200)]
gdk: Add A16_FLOAT and A32_FLOAT formats

We need them for mask-only textures.

For tiffs, we convert the formats to RGBA (the idea that tiff can save
everything needs to be buried I guess) as tiffs can't do alpha-only.

2 years agovulkan: Remove unused struct
Benjamin Otte [Thu, 20 Jul 2023 23:34:19 +0000 (01:34 +0200)]
vulkan: Remove unused struct

2 years agogsk: Add gskrectprivate.h
Benjamin Otte [Thu, 20 Jul 2023 20:25:20 +0000 (22:25 +0200)]
gsk: Add gskrectprivate.h

Add a bunch of inline functions for graphene_rectangle_t.

We use those quite extensively in tight loops so making them as fast as
possible via inlining has massive benefits.

The current render-heavy benchmark I am playing (th paris-30k in node-editor)
went from 49fps to 85fps on my AMD.

2 years agovulkan: Add new error code
Benjamin Otte [Thu, 20 Jul 2023 01:10:28 +0000 (03:10 +0200)]
vulkan: Add new error code

2 years agoUpdate Greek translation
Efstathios Iosifidis [Fri, 21 Jul 2023 22:29:43 +0000 (22:29 +0000)]
Update Greek translation

(cherry picked from commit 9d633773b0952ecd7cf53a54a71feb4c7706f6d4)

2 years agoGtkApplicationImplDBus: Cancel DBus method calls on shutdown
Luca Bacci [Tue, 11 Jul 2023 11:25:22 +0000 (13:25 +0200)]
GtkApplicationImplDBus: Cancel DBus method calls on shutdown

We do that for method calls where we pass a valid GAsyncReadyCallback

Fixes #5775

2 years agogtktextview: return early when resetting gesture / event controller
Luca Bacci [Fri, 21 Jul 2023 13:33:45 +0000 (15:33 +0200)]
gtktextview: return early when resetting gesture / event controller

Fixes #5965

2 years agotools: Replace references to GTK+ with GTK no plus
Daniel Boles [Fri, 21 Jul 2023 11:05:25 +0000 (12:05 +0100)]
tools: Replace references to GTK+ with GTK no plus

2 years agoMerge branch 'render-tool' into 'main'
Matthias Clasen [Fri, 21 Jul 2023 10:56:14 +0000 (10:56 +0000)]
Merge branch 'render-tool' into 'main'

Add gtk4-render-tool

See merge request GNOME/gtk!6197

2 years agoAdd a gtk4-rendernode-tool
Matthias Clasen [Thu, 20 Jul 2023 19:09:27 +0000 (15:09 -0400)]
Add a gtk4-rendernode-tool

This is meant to work with serialized render nodes.

2 years agoMerge branch 'dboles/for-main' into 'main'
Daniel Boles [Fri, 21 Jul 2023 09:35:30 +0000 (09:35 +0000)]
Merge branch 'dboles/for-main' into 'main'

ShortcutController: Add links to docs, fix heading

See merge request GNOME/gtk!6198

2 years agoShortcutController: Add links to docs, fix heading
Daniel Boles [Fri, 21 Jul 2023 09:01:56 +0000 (10:01 +0100)]
ShortcutController: Add links to docs, fix heading

to be "as GtkBuildable", not "as a GtkBuildable", as no other file uses
the latter.

2 years agoMerge branch 'wip/kabus/calendar-select-signal' into 'main'
Matthias Clasen [Fri, 21 Jul 2023 03:38:58 +0000 (03:38 +0000)]
Merge branch 'wip/kabus/calendar-select-signal' into 'main'

gtk/calendar: Avoid emision of day-selected signal from nav buttons

Closes #5769

See merge request GNOME/gtk!6196

2 years agogtk/calendar: Avoid emision of day-selected signal from nav buttons
Khalid Abu Shawarib [Fri, 21 Jul 2023 03:38:58 +0000 (03:38 +0000)]
gtk/calendar: Avoid emision of day-selected signal from nav buttons

2 years agogdk: Drop unnecessary conditionals
Matthias Clasen [Thu, 20 Jul 2023 17:11:44 +0000 (13:11 -0400)]
gdk: Drop unnecessary conditionals

We require GLib 2.76 now.

2 years agotools: Use #pragma once
Matthias Clasen [Thu, 20 Jul 2023 17:15:53 +0000 (13:15 -0400)]
tools: Use #pragma once

We are trying to be consistent about this.

2 years agotools: Drop unnecessary conditionals
Matthias Clasen [Thu, 20 Jul 2023 17:10:53 +0000 (13:10 -0400)]
tools: Drop unnecessary conditionals

We require GLib 2.76 now.

2 years agoMerge branch 'gtk-fix-issue-4990' into 'main'
Matthias Clasen [Thu, 20 Jul 2023 17:39:06 +0000 (17:39 +0000)]
Merge branch 'gtk-fix-issue-4990' into 'main'

Add check for large compose files

Closes #4990

See merge request GNOME/gtk!6195

2 years agoMake the new compose table test work
Matthias Clasen [Thu, 20 Jul 2023 15:48:13 +0000 (11:48 -0400)]
Make the new compose table test work

This just copies what we do already for other
tests that check parser failures.

2 years agoMerge branch 'wip/otte/vulkan-for-main' into 'main'
Benjamin Otte [Wed, 19 Jul 2023 19:51:57 +0000 (19:51 +0000)]
Merge branch 'wip/otte/vulkan-for-main' into 'main'

vulkan: Various smallish things

See merge request GNOME/gtk!6193

2 years agovulkan: Be more careful with supported images
Benjamin Otte [Wed, 19 Jul 2023 05:38:51 +0000 (07:38 +0200)]
vulkan: Be more careful with supported images

Now that we can upload all these fancy formats, we need to make sure
that we actually can.

2 years agomemoryformat: fast-path copies of the same format
Benjamin Otte [Wed, 19 Jul 2023 04:45:00 +0000 (06:45 +0200)]
memoryformat: fast-path copies of the same format

Basically, memcpy() asap if possible.

This happens a lot in Vulkan, where we gdk_memory_conert() image
data from memory textures straight into the VulkanBuffer.

And usually we support the format.

2 years agovulkan: Add premultiply step to texture upload
Benjamin Otte [Wed, 19 Jul 2023 04:14:55 +0000 (06:14 +0200)]
vulkan: Add premultiply step to texture upload

When a GdkMemoryFormat is not supported natively and there's
postprocessing required, add a way to mark a VulkanImage as such via the
new postprocess flags.

Also allow texting such iamges only with new_for_upload() and detect
when that is the case and then run a postprocessing step that converts
that image to a suitable format.
This is done with a new "convert" shader/op.

This now supports all formats natively, no conversions happen on the CPU
anymore (unless the GPU is old).

2 years agovulkan: Change fallback formats
Benjamin Otte [Wed, 19 Jul 2023 04:13:28 +0000 (06:13 +0200)]
vulkan: Change fallback formats

Always fall back to a format that isn't swizzled.

That way it can be used as a target format for rendering.

2 years agovulkan: Split renderpass op into 2
Benjamin Otte [Tue, 18 Jul 2023 22:31:48 +0000 (00:31 +0200)]
vulkan: Split renderpass op into 2

Add an explicit begin() and an end() op. For now, this looks like
overkill, but it allows doing renderpasses with custom ops that are not
meant to render a rendernode.

Examples for this are pre/postprocessing passes or 2-pass blur.

2 years agovulkan: Don't store the renderpass
Benjamin Otte [Tue, 18 Jul 2023 22:15:29 +0000 (00:15 +0200)]
vulkan: Don't store the renderpass

It's only used when parsing.

2 years agovulkan: Pass rectangles where no regions are used
Benjamin Otte [Tue, 18 Jul 2023 22:08:56 +0000 (00:08 +0200)]
vulkan: Pass rectangles where no regions are used

The API was using regions because it always had. But all the code ever
did was get the extents of the region.

So simplify everything by using rectangles everywhere.

2 years agovulkan: Stop keeping the context around
Benjamin Otte [Tue, 18 Jul 2023 22:00:34 +0000 (00:00 +0200)]
vulkan: Stop keeping the context around

These days, we can query it with gsk_vulkan_render_get_context().

Makes quite a few functions require one less argument.
And it also makes the GskVulkanRenderPass empty. Gotta figure out what
to do with it.

2 years agovulkan: Remove unused stuff fom renderpass
Benjamin Otte [Tue, 18 Jul 2023 21:15:22 +0000 (23:15 +0200)]
vulkan: Remove unused stuff fom renderpass

... and move it to the one place where it is used.

2 years agovulkan: Free storage buffer when disposing render object
Benjamin Otte [Mon, 17 Jul 2023 19:03:13 +0000 (21:03 +0200)]
vulkan: Free storage buffer when disposing render object

This caused a lot of leaked memory on the GPU when rendering textures.
(Read: inside node-editor)

2 years agovulkan: Fix leaks with pipeline cache
Benjamin Otte [Mon, 17 Jul 2023 19:02:33 +0000 (21:02 +0200)]
vulkan: Fix leaks with pipeline cache

In particular, we were leaking the actual cache and then created a new
one.

2 years agobuild: Move the glslc check into the top meson file
Benjamin Otte [Wed, 19 Jul 2023 13:36:55 +0000 (15:36 +0200)]
build: Move the glslc check into the top meson file

Put it with the other Vulkan checks, so it's easy to find.

2 years agovulkan: Remove the pre-compiled shaders
Benjamin Otte [Wed, 19 Jul 2023 12:15:57 +0000 (14:15 +0200)]
vulkan: Remove the pre-compiled shaders

Instead, build-depnd on glslc to build them.

glslc is available in all important distros for a while:
  Fedora >= 28
  Ubuntu >= 23.04
  Debian >= 12
  Arch
  Opensuse >= 15.2
  msys2
are the ones I checked.

So we can depend on it and avoid having to deal with keeping spirv files
up-to-date in all commits.

It's also 700kB of data, and not updating it helps.

2 years agoci: Include glslc for Vulkan builds
Benjamin Otte [Wed, 19 Jul 2023 12:55:07 +0000 (14:55 +0200)]
ci: Include glslc for Vulkan builds

2 years agoAdd test for large compose file
Luca Bacci [Wed, 19 Jul 2023 15:40:52 +0000 (17:40 +0200)]
Add test for large compose file

See #4990

2 years agoAdd check for large compose files
Luca Bacci [Wed, 19 Jul 2023 14:19:28 +0000 (16:19 +0200)]
Add check for large compose files

Fixes #4990

2 years agoMerge branch 'dboles/theme-no-backdrop-list-view-text' into 'main'
Daniel Boles [Wed, 19 Jul 2023 13:02:28 +0000 (13:02 +0000)]
Merge branch 'dboles/theme-no-backdrop-list-view-text' into 'main'

theme: Don't dim text in backdropped list/listview

See merge request GNOME/gtk!6175

2 years agoMerge branch 'wip/otte/vulkan-for-main' into 'main'
Benjamin Otte [Sun, 16 Jul 2023 12:22:35 +0000 (12:22 +0000)]
Merge branch 'wip/otte/vulkan-for-main' into 'main'

vulkan: Make RenderOps into proper structs

See merge request GNOME/gtk!6188

2 years agovulkan: Rebuild the shaders
Benjamin Otte [Sun, 16 Jul 2023 11:52:15 +0000 (13:52 +0200)]
vulkan: Rebuild the shaders

Just to be sure I didn't forget rebuilding some shader at some point.

2 years agovulkan: Redo barriers
Benjamin Otte [Sat, 15 Jul 2023 20:19:20 +0000 (22:19 +0200)]
vulkan: Redo barriers

We now store all the relevant state of the image inside the VulkanImage
struct, so we can delay barriers for as long as possible.

Whenever we want to use an image, we call the new
gsk_vulkan_image_transition() and it will add a barrier to the desired
state if one is necessary.

2 years agovulkan: Track the current pipeline stage of images
Benjamin Otte [Sat, 15 Jul 2023 14:38:03 +0000 (16:38 +0200)]
vulkan: Track the current pipeline stage of images

This way, we can in theory properly transition images because we know
which stage to transition from.

IN practice this is happening in future commits.

2 years agovulkan: Handle images in the ShaderOp
Benjamin Otte [Sat, 15 Jul 2023 11:28:08 +0000 (13:28 +0200)]
vulkan: Handle images in the ShaderOp

This looks more convoluted in this commit, but future commits will
hopefully make up for it.

2 years agovulkan: Make clip type an enum
Benjamin Otte [Sat, 15 Jul 2023 10:47:35 +0000 (12:47 +0200)]
vulkan: Make clip type an enum

and add gsk_vulkan_shader_op_alloc() that sets it properly.

2 years agovulkan: Introduce GskVulkanShaderOp
Benjamin Otte [Sat, 15 Jul 2023 09:39:18 +0000 (11:39 +0200)]
vulkan: Introduce GskVulkanShaderOp

It's the new base class for shaders now.

We're doing deep inheritance now, woohoo!

Also, port all the shader ops to it.

2 years agovulkan: Remove GskVulkanUploader
Benjamin Otte [Sat, 15 Jul 2023 00:05:24 +0000 (02:05 +0200)]
vulkan: Remove GskVulkanUploader

... and all the remaining functions still using it.

It's all unused and has been replaced by upload and download ops.

With this change, all GPU operations now go via GskVulkanOp.command()
and no more side channels exist.