This is should make testing for normal endusers easier by providing
prebuild binaries for them. It also serves as a simple CI by compiling
every commit and Pull Request for Linux, MacOS and Win32. And it saves
time, because (Windows) test build must no longer created by hand.
* Windows is build for Win32 only. We won't add a Win64, because there's
no point in having a 64 bit Windows release and it would break most
existing mods. Savegames are also not compatible between 32 and 64 but
builds.
* MacOS is build to get some test exposure and to publish up to date
binaries to users. This doesn't mean that MacOS is now officially
supported. It stays community supported. The binaries are untested,
because I have no Mac. PRs are welcome. ;)
* Linux is build with ubuntu-latest, which is the last LTS release. The
binaries should work on most other distros.
Windows includes all required dependencies. As a difference to release
builds the curl.dll is taken from upstream and not a cut down custom
build. MacOS and Linux do not ship the dependencies, users should
install them through Brew or their distro.
Github strips file permission when zipping the assets. A work around
would be to create a tar archive and zip that, but that is ugly. I
opted against it, users must mark the binaries executable by hand.
These workflows trigger at each push to the master master branch and at
each new or edited pull request.
Special features like SDL3 are not supported at this time.
Windows defaults to `wassapi`, which is a sensible choice. But WASAPI
only guarantees 32 bit float samples, anything else only works if the
driver or something supports it and YQ2 requires 16 bit samples. That
can be worked around by having SDL recode the audio, but I don't want
such a invasive change right before a release.
Another part of #1132.
Hardcoding default driver for some of the supported platform is a
remnant of SDL 1.2 and hasn't been necessary since SDL 2.0 a long
time ago. In fact it has a high properbility to break things, SDL
could easily end up with a non working driver.
When `s_sdldriver` is set to the newly introduced value `auto` the
driver is selected by SDL. In all other cases the string is the
driver name which SDL will be forced to.
This doesn't fix existing configs. Since the OpenAL sound backend has
been the default for nearly 15 years and we haven't received bug reports
for some other problem with the SDL sound backend in the past, I'm half
sure that there are next to users out there. These can reset the cvar
by hand if necessary.
Closes#1132.
Done for all platforms, CMakeLists included. Unneeded with glad.
Renderer fallback logic now includes gles1, just before soft:
custom -> gl3 -> gles3 -> gl1 -> gles1 -> soft.
- Fix platforms in q64/outpost,
- Add MDR model format support,
- Sync with classic yquake 2 repository,
- Full support pcx version 5 format,
- Rework image load code.
Static arrays there have their dimensions swapped, they make more sense now.
Added important detail in gl1_lightmapcopies doc.
Also added doc for gl_polyblend, just because of its "popularity".
Available in both GL1 and GLES1. Keep multiple copies of "the same"
lightmap on video memory; they are actually different, because they're
used in different frames. This is a workaround for the usage of
glTexSubImage2D() for dynamic lighting, since modifying textures used
recently causes slowdown in embedded/mobile devices.
Controlled by gl1_lightmapcopies cvar; default in GL1 is `0`, while
in GLES1 is `1`.
Available only on GLES1, allows to use a "performance hint" to the
GPU to discard the contents of depth and stencil buffers after each
frame. Some hardware might want to reuse them, but Quake 2 doesn't
work that way.
Controlled by gl1_discardfb cvar, default `1`.
Variant of GL1, meant for embedded/mobile devices only.
Build it with "make with_gles1".
For Windows, you'll need MSYS2 and a decent ANGLE implementation
(probably not worth the trouble).
Building with CMake only works in Linux, so it has been commented out.
Changed "buffer" functions (vertex, single/mtex, color) to macros.
Macros eliminate the function call overhead, resulting in faster
execution times. Depending of the hardware, there might be a
performance increase of almost 10%.
This forced the buffer to be exposed as global.
Not worth doing this for 2D elements though.