Commit Graph

384 Commits

Author SHA1 Message Date
Jaime Moreira 50aebd2de4 GL1 unified draw calls, init
Implemented a batching procedure, to try to group meshes in a buffer
and use a final GL call to draw them all in one step, instead of the
many GL draw calls existing today.
For now, only 2D textures are included, especifically console text
("conchars"), scrap and tiles. It's not worth doing this for
individual 2D elements (e.g. crosshair).
2024-07-15 06:56:02 -04:00
Henk 473b2ca078
Update Makefile to build on Apple Silicon 2024-06-14 17:26:24 +02:00
Yamagi 8d04ed0bbf Mention SDL 3 as alternative to SDL 2. 2024-04-07 11:01:45 +02:00
Yamagi 8cedbb0694 Port the Windows platform backend including Makefile support to SDL3.
This also fixes a long standing bug with the Windows part of the
Makefile linking -lSDL2 into q2ded.exe.
2024-04-07 11:01:45 +02:00
Yamagi 9b0c95daaa Fork the clients SDL 2 backends into SDL 3 versions.
At this time they are just copies. The actual porting will be done in
upcoming commits.
2024-04-07 11:01:44 +02:00
Yamagi 126c2ea10b Add SDL 3 support to the Makefile.
This is hidden behind WITH_SDL3, which is disabled by default.

Additionally rename the SDL sources files in the client to represent the
SDL major version they are supporting. They will be forked for SDL 3.
That isn't optimal, because it forces us to support two variants of the
same code. However the changes between SDL 2 and 3 are too big to work
with #ifdef and something like function pointer magic is even more
confusing.
2024-04-07 11:01:44 +02:00
Jaime Moreira 9f9c212648 OpenGL 1 errors are visible now
Needs DEBUG=1 to enable
2024-01-06 13:29:13 -03:00
Yamagi 4967b9d0ca Update miniz to e5700656b34b732f8d4e5df87cb0de00a6c8f319. 2023-11-24 09:26:14 +01:00
Yamagi 90402c3f85 Move miniz into a subdirectory.
An upcoming update will add several files, having miniz in it's own
subdirectory makes it clear what belongs to it an whit to unzip.
2023-11-23 18:21:44 +01:00
Jaime Moreira 9821c4b0a2 Show correct replacement for gl_lightmap cvar
Typos corrected
2023-08-26 19:18:24 -04:00
Yamagi 3a9b8de2ab Don't enforce a C standard in Makefile.
This matches the behavior of cmake. Besides that we have some optional
C11 code and it should be used if the compiler has support for it. And
C99 as default is a remnant from the old times were we didn't want C11
in the standard code path, because several old Linux distros didn't
support it...
2023-04-15 19:57:26 +02:00
Denis Pauk c17210b34a Share R_TextureAnimation 2023-01-21 18:24:55 +02:00
Denis Pauk ae13c7e034 Share MD2/SP2 files 2022-10-17 22:43:39 +03:00
Yamagi d29e551773 Remove work around for msys2 / mingw64 not setting CC.
This was a upstream bug which has been resolved long ago. Closes #901.
2022-10-08 16:29:59 +02:00
Yamagi b59077b972 Normalize `arm64` to `aarch64`.
This ensures that we call ARM64 `aarch64` on all platform, which aren't
MacOS or Windows. And it fixes the bug, that `arm64` was normalized to
`arm`, making incompatible savegames between 32 bit and 64 bit ARM
loadable. Leading to crashes.
2022-05-20 12:56:22 +02:00
Daniel Gibson 2a8bd9e7a6 GL3: build ref_gles3 in addition to ref_gl3
instead of making it a compile-time option, just build both
2022-04-27 00:33:46 +02:00
Daniel Gibson 8737ce64fc GL3: Support OpenGL ES3.0 (compile time option GL3_GLES=yes)
the option defaults to no, of course.
2022-04-26 04:09:38 +02:00
David CARLIER a15e53ce60 build fix proposal on mac where archs are well defined.
the arch normalization leads to arm32 bit build under mac m1.
2021-07-03 16:02:58 +01:00
Yamagi 376d97c54f Correct braino in LDFLAGS / LDLIBS, Windows build fix 2/2. 2021-06-29 09:01:13 +02:00
Yamagi 61c08eee13 Fix ASAN and UBSAN builds, enhance sanitizers a little bit.
At least for LLVM / Clang the -fsanitize= option must be passed to the
linker before any objects or libraries, otherwise the sanitizers will
either noch link or are disfunctional. Split LDFLAGS into LDFLAGS for
flags and LDLIBS for librariers, pass LDFLAGS before any objects and
LDLIBS after all objects. While at it set RTLD_NODELETE so that shared
libs opened by dlopen() are never deleted from memory when building
with sanitizers.
2021-06-26 16:28:08 +02:00
David Carlier 53c684525f solairs/illumos build fix proposal. 2021-06-13 08:25:56 +01:00
Yamagi bb7bf8ef9e Disable floating-point expression contraction on gcc builds.
While this shouldn't be a problem with C code, better be safe than
sorry. @DanielGibson stumbled over this while debugging some strange
RB-Doom3 / dhewm3 issues with gcc. See this bug report for details:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100839
2021-06-06 18:48:38 +02:00
Yamagi ce10213d91 Remove rev_vk from the Makefile. 2021-05-28 09:32:42 +02:00
Yamagi 2a18f02186 Don't build the vk renderer when WITH_REFVK is no.
This is the third or forth try, already. *grrr* WITH_REFVK isn't enough,
as long as the target is there. Wrap the whole target in an if-block.
2021-03-10 10:50:02 +01:00
Yamagi d745e16523
Merge pull request #642 from DanielGibson/fix-lm-glitch
Makefile: Fix architecture detection on Windows
2021-01-13 18:11:03 +01:00
Daniel Gibson ee7923a9dd Fix architecture detection on Windows in Makefile, bump SAVEGAMEVER
$PROCESSOR_ARCHITECTURE seems to contain the architecture of the host,
but we need the architecture the current MinGW shell is targeting.
$MINGW_CHOST seems to be just that, and on my system it's either
i686-w64-mingw32 (mingw32.exe) or x86_64-w64-mingw32 (mingw64.exe)
(No idea what it looks like for Windows on ARM...)

As fixing this would otherwise break existing savegames, I bumped the
SAVEGAMEVER to "YQ2-4" and added a quirk for older savegameversions:
On Windows i386 savegames that contain "AMD64" instead of "i386" as
architecture are also accepted.
(For YQ2-1 this didn't seem necessary, apparently "i386" was hardcoded)
2021-01-12 05:04:11 +01:00
Yamagi a52402fd3c Add undefined behaviour sanitizer to the Makefile.
While here update some comments and add a comment sections for the
command line variables.
2021-01-10 18:55:42 +01:00
Yamagi 85b9f84b3d Don't link against the Vulkan loader, load it at runtime. 2020-12-12 14:45:04 +01:00
Denis Pauk 896346cf1a Fix MINGW64 windows build 2020-12-12 14:45:04 +01:00
Denis Pauk b94afbc6c1 remove unused vk_mem_alloc 2020-12-12 14:45:04 +01:00
Denis Pauk 518f46953b Build vk_util as part of ref_vk 2020-12-12 14:45:04 +01:00
Yamagi d291e0bbc5 Add header dependencies for the Vulkan renderer.
While here load the software renderer header dependencies. No one ever
complained about that... -_- And fix a long standing typo.
2020-12-12 14:45:04 +01:00
Yamagi 9801db5c5c Simplify the Vulkan renderer build.
* No need for global CXXFLAGS. The only difference to CFLAGS is the
  standard selector, use $(subst) to derive them from CFLAGS.
* libstd++ must never be manually linked. Doing so only works for the
  GNU C++ stack, not for the LLVM stack and anything else. Link with
  the C++ frontend instead.
* Force MingW to g++ as CXX.Force MingW to g++ as CXX.
* No need to specify -lm, libm is already part of the global LDFLAGS.
* Windows doesn't need -fPIC.
* The Vulkan renderer doesn't use glad.
2020-12-12 14:45:04 +01:00
Yamagi c895d004d2 Remove artificial Linux only limitation for the Vulkan renderer. 2020-12-12 14:45:04 +01:00
Denis Pauk ca60275694 move headers to right place 2020-12-12 14:45:03 +01:00
Denis Pauk 823e0eb915 Add experemental vulkan render 2020-12-12 14:45:03 +01:00
nia e814446595 Set runtime library paths 2020-11-24 14:11:19 +01:00
nia c211176149 Support building on NetBSD with the GNU make build system 2020-11-24 14:07:58 +01:00
Yamagi e9a0162eea -fvisibility=hidden is a compiler option, don't pass it to the linker. 2020-10-08 12:02:35 +02:00
Yamagi bf83db4d6d Add an ASAN option to the Makefile.
ASAN includes DEBUG. ASAN can be overriden by the environment.
2020-10-08 11:56:41 +02:00
David Carlier 1412d0201c Backport changes to old Makefile 2020-08-09 15:52:11 +00:00
David Carlier 3e63226bad Translate changes to the Makefile build too 2020-06-26 12:43:06 +00:00
Alex Petty a2d6cc9cdc Mac OS uses @executable_path not for rpath 2020-05-20 19:39:09 -05:00
Alex Petty 895c7bc850 Enable rpath with Mac OS linker 2020-05-20 19:30:52 -05:00
Yamagi 00e6eb6303 Remove unnecessary OSX_ARCH setting, replace it with YQ2_ARCH. 2020-04-21 13:57:09 +02:00
Yamagi 5b327c0417 Don't use `yield` opcode if unsupported.
This is an enhancement to the previous `yield` work:

* Don't enforce `-march=armv8-a` for aarch64 builds, because it is the
  initial ARMv8 revision and compilers will either use that or something
  newer.
* Refine preprocessor guards around `asm("yield");` so the code isn't
  compiled in if unsupported by the current `-march='.

Submitted by @smcv in #535.
2020-04-03 08:30:41 +02:00
Yamagi 9f7c5c205b Enforce the YQ2_OSTYPE override for mingw. 2020-03-24 13:37:31 +01:00
Yamagi 142690e164 Enforce a minimum architecture for ARM.
This was added in 558ee7 to master.
2020-03-23 16:48:56 +01:00
Yamagi c904880dc9 Another round of small Makefile fixes:
* ZIPCFLAGS was never defined, just appended to.
* Make INCLUDE overrideable.
2020-03-23 16:47:34 +01:00
Yamagi 11cb64ede2 Mark global additions to CFLAGS and LDFLAGS as `override`.
This prevents them from being overriden by command line variables, e.g.
something like `make CFLAGS=-0`. Requested by @smcv in #523.
2020-03-23 16:47:34 +01:00