forked from utkarshdalal/GameNative
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTHIRD_PARTY_NOTICES
More file actions
296 lines (231 loc) · 14 KB
/
THIRD_PARTY_NOTICES
File metadata and controls
296 lines (231 loc) · 14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
# Third-Party Notices
This file contains notices for third-party assets and libraries used in this project.
---
## Scope and Completeness
This list is **not exhaustive**. GameNative builds on the broader open-source
Wine / Proton / DXVK / VKD3D / Mesa / box64 / FEX / PulseAudio ecosystem, and
additional smaller components may be present in bundled archives under
`app/src/main/assets/` and prebuilt native libraries under
`app/src/main/jniLibs/`. Where a component is distributed under a copyleft
license (LGPL, GPL, MPL), the terms of that license apply regardless of whether
the component is named in this file. The sections below highlight the items
that most users will want to know about, together with a blanket offer for the
corresponding source of any copyleft component we distribute in binary form.
---
## Availability of Source for Copyleft Components
For any component distributed in binary form with this application that is
covered by a copyleft license (LGPL-2.1, LGPL-3.0, GPL-2.0, GPL-3.0, or
MPL-2.0), the corresponding source code is available from the upstream project
at the revision used. Where practical, the upstream name and revision are
recorded alongside the binary — for example in `VERSION` / `COMMIT` metadata
inside the bundled archive, in the filename of the archive itself, or in
`app/src/main/cpp/` for components built from source in this repository.
If you cannot obtain the source from upstream, contact
Utkarsh Dalal on our
[Discord server](https://discord.gg/2hKv4VfZfE)) and we will supply it, in
accordance with LGPL-2.1 §6, LGPL-3.0 §4, GPL-2.0 §3, and GPL-3.0 §6. This
offer is valid for at least three years from the date on which you received
the binary.
---
## libredirect.so (Proprietary)
**Component:** `libredirect.so`
**Location:** `app/src/main/assets/redirect.tzst`
**License:** Proprietary — all rights reserved by the GameNative maintainers.
`libredirect.so` is a small native shim developed by the GameNative
maintainers. It is loaded **only into Wine / Proton subprocesses** at runtime
via `LD_PRELOAD`; it is not linked with, and does not run inside the address
space of, the Kotlin/Java Android application. Its responsibilities are:
1. **Identifier compatibility.** Some guest-side components embed the
historical Android package identifier `com.winlator`. `libredirect.so`
rewrites those references to the current application identifier at runtime
so that games which hardcode or capture the identifier during launch
continue to boot correctly under GameNative.
2. **Android 15 (API 35) compatibility.** Recent Android releases tightened
restrictions on how executables stored under an app's private data
directory may be invoked. `libredirect.so` adapts affected process
launches so that the emulation stack continues to function on Android 15
and later.
`libredirect.so` was written from scratch by the GameNative maintainers and
is not derived from any code in this repository. It is kept closed-source
for a specific reason. AI-assisted and commercial forks routinely take
open-source Android projects, rename them, and redistribute them through
commercial channels as their own products. Because `libredirect.so` is
specific to this application — not a generic tool that a fork could use
unchanged — publishing its source would reduce rebranding GameNative into
a working fork to a near-trivial operation. Keeping it closed raises the
cost of that path substantially. Every other component in this repository
— the application UI, store integrations, container management, device
configuration, and all code the community actively contributes to —
remains fully open under GPL-3.0 and may be forked, modified, and
redistributed under those terms.
### Relationship to the GPL-3.0 application
GameNative's Kotlin/Java application is distributed under GPL-3.0 and remains
so. `libredirect.so` runs inside separate subprocesses (Wine and Proton
instances) and communicates with those processes through standard
operating-system interfaces only. It is not compiled or linked into the
Android application, does not share the Android application's address space,
and does not expose a library interface to it. Under the FSF's and SFLC's
longstanding interpretation of the GPL's "mere aggregation" language
(GPL-3.0 §5, GPL-2.0 §2), this makes `libredirect.so` a separate program
aggregated with GameNative on the same distribution medium rather than a
derivative work of the application.
### Separability
The GameNative application can be rebuilt without `libredirect.so` by
deleting `app/src/main/assets/redirect.tzst` before building the APK. The
resulting GPL-3.0 application builds, installs, and runs as a standalone
program; it does not require `libredirect.so` to be compiled or linked.
Practical runtime compatibility will be reduced: on Android 15 and later,
most Windows games launched through the bundled emulation stack will fail
to start, and on earlier Android versions some games that embed the
historical `com.winlator` identifier will fail to receive input. This
reflects GPL's guarantee that users can modify and rebuild the application
itself; it does not imply that `libredirect.so` is part of the application
in the sense of GPL-3.0 §0 ("based on").
---
## Steam Client Bootstrap Shim (Source Withheld)
**Component:** `libsteambootstrap.so`
**Binary location:** `app/src/main/jniLibs/<abi>/libsteambootstrap.so`
**Source location in repo:** intentionally absent
(`app/src/main/cpp/steambootstrap/steam_bootstrap.c` is listed in
`.gitignore` and is **not** committed to this repository)
**Authorship:** Written from scratch by the GameNative maintainers. Not derived
from Valve's Steam client, the Steamworks SDK, or any third-party project.
**License of the binary as distributed in this APK:** Proprietary —
all rights reserved by the GameNative maintainers.
`libsteambootstrap.so` is a small JNI shim loaded by the GameNative Android
application when launching a title in "real Steam" mode. It performs only
two jobs:
1. `dlopen()` the Android build of `libsteamclient.so` that ships inside the
user's Steam container, and
2. resolve a handful of exported entry points from that library and invoke
them, in order, to bring the in-process Steam client to a logged-in state
using the refresh token the GameNative application already obtained
through the standard Steam authentication flow.
The shim does **not** wrap, embed, link against, or redistribute any code from
Valve's Steam client, the Steamworks SDK, or any other Valve-owned component.
It interacts with `libsteamclient.so` exclusively at runtime, in the user's
own Steam installation, through the same public dynamic-loader interface that
Valve's own `steam.exe` uses on every other platform.
### Why the source is not in this repository
The shim's implementation encodes specific knowledge about which exported
symbols and proxy-vtable slots inside `libsteamclient.so` correspond to which
Steam client operations (pipe creation, global-user attachment, login
information / token registration, logon kickoff, logoff, pipe and user
release, and connection-state polling). That information was derived
exclusively from local static analysis of a `libsteamclient.so` binary
already present on the maintainer's own device as part of an installed Steam
container; it is not reproduced from, copied from, or based on any leaked,
proprietary, or non-public Valve source material.
Those symbols and slot layouts are nevertheless internal details of Valve's
proprietary Steam client. Valve does not document them, does not publish
them, and does not treat them as a public interface. The GameNative project
has decided to respect that: we use the information to make our own
application work against a Steam client the user has already installed, but
we do not publish a redistributable map of those internals as part of this
repository.
Practically, this means the shim's source lives only on maintainer
workstations and the binary built from it (`libsteambootstrap.so`) ships in
the APK. The source file itself is listed in `.gitignore` so it cannot be
committed by accident.
All of GameNative's own application logic — UI, store integration, container
management, device configuration, the token-based login flow that produces
the refresh token in the first place, and the JNI declaration that calls
into this shim — remains fully open under GPL-3.0.
### Relationship to the GPL-3.0 application
GameNative's Kotlin/Java application is distributed under GPL-3.0 and remains
so. `libsteambootstrap.so` is a separate native module. It exposes a small,
well-defined JNI surface (currently `nativeInit` and `nativeShutdown`,
declared in `app/src/main/java/app/gamenative/SteamBootstrap.kt`) and
contains no code copied from the GPL-3.0 application. The application can
be built and run without it; in that configuration "real Steam" launch mode
is unavailable, but every other GameNative feature continues to work. Under
the FSF's and SFLC's longstanding interpretation of the GPL's "mere
aggregation" language (GPL-3.0 §5, GPL-2.0 §2), this makes
`libsteambootstrap.so` a separate program aggregated with GameNative on the
same distribution medium rather than a derivative work of the application.
### Replacing the shim
A fork or downstream packager who wishes to provide an alternative
implementation may:
1. Implement the JNI methods declared on `app.gamenative.SteamBootstrap`
(`nativeInit(...)`, `nativeShutdown()`) in their own native library, and
2. Place the resulting `.so` at
`app/src/main/jniLibs/<abi>/libsteambootstrap.so` in place of the binary
shipped here.
No part of the GPL-3.0 application needs to be modified to do this.
---
## Kenney Input Prompts
**Asset Pack:** Input Prompts
**Author:** Kenney (https://kenney.nl)
**Source:** https://kenney.nl/assets/input-prompts
**License:** CC0 1.0 Universal (Public Domain)
The input prompt icons used for gamepad, keyboard, and mouse button indicators
are from Kenney's Input Prompts asset pack. These icons are located in:
- `app/src/main/res/drawable/ic_input_xbox_*.xml` (Xbox controller icons)
- `app/src/main/res/drawable/ic_input_kbd_*.xml` (Keyboard and mouse icons)
While CC0 doesn't require attribution, we gratefully acknowledge Kenney's
excellent work in creating these assets.
---
## License Text: CC0 1.0 Universal
The person who associated a work with this deed has dedicated the work to the
public domain by waiving all of his or her rights to the work worldwide under
copyright law, including all related and neighboring rights, to the extent
allowed by law.
You can copy, modify, distribute and perform the work, even for commercial
purposes, all without asking permission.
Full license text: https://creativecommons.org/publicdomain/zero/1.0/
---
## lsfg-vk / lsfg-vk-android
**Library:** lsfg-vk (Vulkan frame generation layer)
**Authors:** PancakeTAS and contributors (upstream), FrankBarretta (Android port), xXJSONDeruloXx (Vortek/Adreno patches)
**Source (upstream):** https://github.com/PancakeTAS/lsfg-vk
**Source (Android port):** https://github.com/FrankBarretta/lsfg-vk-android
**Source (GameNative fork):** https://github.com/GameNative/lsfg-vk-android
**License:** MIT (upstream v1.0; relicensed GPL-3.0 post-v2.0.0-dev, commit 5bedd8d)
A prebuilt version of lsfg-vk with Android-specific patches (AHardwareBuffer
image sharing, TMPDIR support, Vortek compatibility) is included as a Vulkan
implicit layer at `app/src/main/assets/lsfg_vk/android_arm64_v8a/liblsfg-vk-layer.so`.
The layer intercepts `vkQueuePresentKHR` to generate interpolated frames using
Optical Flow, driven by the user's own `Lossless.dll` (not redistributed).
### License Text: MIT
Copyright (c) 2025 lsfg-vk
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
---
## OpenAL Soft
**Library:** OpenAL Soft v1.25.1
**Author:** kcat (Chris Robinson) and contributors
**Source:** https://openal-soft.org/ / https://github.com/kcat/openal-soft
**License:** LGPL-2.1 (GNU Lesser General Public License v2.1)
Pre-compiled Windows DLLs (openal32.dll, soft_oal.dll) for both x86 and
x86_64 architectures are included in `app/src/main/assets/wincomponents/openal.tzst`.
These DLLs are extracted at runtime only when the user explicitly sets the
`WINEDLLOVERRIDES` environment variable to reference openal32 or soft_oal.
As required by LGPL-2.1, the complete source code for the version used is
available at:
https://github.com/kcat/openal-soft/releases/tag/1.25.1
Users may substitute their own build of OpenAL Soft by replacing the DLLs
in the wineprefix `drive_c/windows/system32/` and `drive_c/windows/syswow64/`
directories.
### License Text: LGPL-2.1
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or (at
your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
for more details.
Full license text: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html