@gjsify/gtk-runtime-win32-x64 0.34.0 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -141,13 +141,36 @@ both sufficient and the simplest mechanism.
141
141
  The GdkWin32 backend is compiled **into** `libgtk-4-*.dll` (GTK4 builds every
142
142
  backend in), so there is no separate backend DLL — the caches (`loaders.cache`,
143
143
  `gschemas.compiled`, `icon-theme.cache`) + the librsvg backer are the
144
- additions. The builder also seeds ANGLE (`libEGL`/`libGLESv2`), but the
145
- gvsbuild GTK4 release ZIP ships none, so the bundle carries `epoxy-0.dll` —
146
- GL *dispatch* — and no GL *implementation*. On a host with a vendor OpenGL ICD
147
- that is invisible; on a GPU-less one (VM, RDP, CI) every `Gtk.GLArea` fails
148
- with `No GL implementation is available`. Measured on the win11-gjsify VM;
149
- tracked as #1097, with the reasoning in the webgl-on-win32 entry of
150
- `status/open-todos.md`. gvsbuild ships the tools this step runs (`gdk-pixbuf-query-loaders`,
144
+ additions. The bundle carries `epoxy-0.dll` — GL *dispatch* — and **no GL
145
+ *implementation***; the builder probes for one and records the answer as
146
+ `manifest.glImplementation` (`--require-gl` makes an empty result fatal, for the
147
+ promotion that ships one). On a host with a vendor OpenGL ICD that is invisible;
148
+ on a GPU-less one (VM, RDP, CI) every `Gtk.GLArea` fails with `No GL
149
+ implementation is available`. Measured on the win11-gjsify VM; tracked as #1097,
150
+ with the reasoning in the webgl-on-win32 entry of `status/open-todos.md`.
151
+
152
+ **Neither obvious way of closing it works as-is**, which is why the bundle still
153
+ ships none — both measured on 0.34.0:
154
+ - *ANGLE* (`libEGL`/`libGLESv2`) is what #1097 proposed, and gvsbuild ships none.
155
+ But adding it would not have helped: this `epoxy-0.dll` is built with **no EGL
156
+ support at all** (no `epoxy_has_egl` export, no `egl*` entry point), so
157
+ `gdk_win32_display_get_egl_display()` can never engage. That needs libepoxy
158
+ rebuilt with `-Degl=enabled` first.
159
+ - *A desktop ICD in `bin/`* (Mesa's `opengl32.dll` + `libgallium_wgl.dll`) is
160
+ inert by PLACEMENT: epoxy loads desktop GL with a bare
161
+ `LoadLibraryA("OPENGL32")`, which Windows answers from the **application
162
+ directory** and then **System32** — never from `PATH`, the only search the
163
+ loader's bundle wiring controls. System32's inbox GL 1.1 wins and GTK4 rejects
164
+ it. Reaching a bundled ICD needs the addon to opt the process into
165
+ `SetDefaultDllDirectories` + `AddDllDirectory(<bundle>/bin)`.
166
+
167
+ **The host-side answer works today** and needs no bundle change: register Mesa as
168
+ a system OpenGL ICD (`mesa-dist-win`'s `systemwidedeploy.cmd 1` writes
169
+ `HKLM\…\OpenGLDrivers\MSOGL` → `mesadrv.dll` and leaves the inbox `opengl32.dll`
170
+ in place as the loader). Measured on the win11-gjsify VM: GDK then reports
171
+ **OpenGL 4.6, non-legacy**, and `three-geometry-teapot` renders.
172
+
173
+ gvsbuild ships the tools this step runs (`gdk-pixbuf-query-loaders`,
151
174
  `glib-compile-schemas`, `gtk4-update-icon-cache`, `fc-cache`) in `<prefix>/bin`.
152
175
  Each data step is defensive — a missing tree/tool WARNs and continues (the DLL +
153
176
  typelib bundle is always produced).
package/gtk/manifest.json CHANGED
@@ -131,6 +131,19 @@
131
131
  "GstApp"
132
132
  ]
133
133
  },
134
+ "glImplementation": {
135
+ "matched": [],
136
+ "dispatch": [
137
+ "epoxy-0.dll"
138
+ ],
139
+ "patterns": [
140
+ "/^opengl32\\.dll$/i",
141
+ "/^libgallium_wgl\\.dll$/i",
142
+ "/^mesadrv\\.dll$/i",
143
+ "/^libEGL.*\\.dll$/i",
144
+ "/^libGLESv2.*\\.dll$/i"
145
+ ]
146
+ },
134
147
  "licenses": {
135
148
  "notice": "THIRD-PARTY-NOTICES.md",
136
149
  "dir": "licenses",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gjsify/gtk-runtime-win32-x64",
3
- "version": "0.34.0",
3
+ "version": "0.35.0",
4
4
  "description": "Batteries-included GTK/GObject-Introspection runtime bundle for Windows x64 — lets @gjsify/node-gi load gi:// namespaces (GLib/GObject/Gio/cairo/Pango/Graphene/Gdk) with NO gvsbuild/system GTK. Platform-gated (win32/x64 only).",
5
5
  "type": "module",
6
6
  "license": "MIT",