Commit graph

516 commits

Author SHA1 Message Date
Christoph Oelckers
07f87e2542 - changed CreateTexBuffer to return its info in a structure and not as a naked pointer. 2018-12-11 21:06:34 +01:00
Christoph Oelckers
ab624c8c5a Merge branch 'master' into Texture_Cleanup
# Conflicts:
#	src/textures/hires/hqresize.cpp
2018-12-11 20:27:24 +01:00
alexey.lysiuk
8b46be7686 - print VM stack trace on startup abort exception
https://forum.zdoom.org/viewtopic.php?t=62650
2018-12-11 10:46:56 +02:00
Christoph Oelckers
03626107eb - changed multipatch texture composition to always composite off full source images and not do it recursively.
Previously it tried to copy all patches of composite sub-images directly onto the main image.
This caused massive complications throughout the entire true color texture code and made any attempt of caching the source data for composition next to impossible because the entire composition process operated on the raw data read from the texture and not some cacheable image. While this may cause more pixel data to be processed, this will be easily offset by being able to reuse patches for multiple textures, once a caching system is in place, which even for the IWADs happens quite frequently.

Removing the now unneeded arguments from the implementation also makes things a lot easier to handle.
2018-12-08 17:23:15 +01:00
Christoph Oelckers
3dc9eab743 Renamed the operator() and [] methods in FTextureManager which take a name
The operators cannot be easily searched for so this makes it hard to do any evaluations on the use of this method.
2018-12-07 02:43:27 +01:00
Christoph Oelckers
6eab4a882c - narrowing down the public interface of the texture class
Cannot refactor if the entire class is this wide open to everything.
Not complete yet, doesn't fully compile!
2018-12-06 01:11:04 +01:00
Christoph Oelckers
85a3edf583 - removed the no longer needed exception prevention hack.
# Conflicts:
#	src/scripting/vm/vmframe.cpp
2018-12-01 14:27:18 +01:00
SanyaWaffles
6dd73e43fd Attempts to fix errors introduced by merging of asmjit branch and wea… (#649)
* Attempts to fix errors introduced by merging of asmjit branch and weapons scripting branch

* This didn't work. The others should work though.

* fix scriptutil.cpp:(.text+0x18d): undefined reference to `PClass::FindActor(FName)'

* Attempt to fix compilation on macOS
2018-12-01 07:31:25 +01:00
Christoph Oelckers
42b9a41421 - removed the longjmp based exception catch/rethrow mechanism and instead force-terminate in case a user exception is thrown while the VM is executing JITed code on a non-Windows system
On Windows none of this is needed, because we can generate a proper unwind frame for the JITed functions, but even on Linux, it would require manual additions to each single piece of native code that ever gets called from inside a JIT compiled function.
This is an utterly prohibitive proposition because it makes direct native calls a virtual impossibility
So, in order to get the thrown error properly presented both I_Error and ThrowAbortException will now forward to I_FatalError if it is called from inside a JIT context.
2018-11-30 21:30:14 +01:00
alexey.lysiuk
dc6ba6bd52 - fixed compilation of POSIX targets
src/doomerrors.h:74:14: error: exception specification of overriding function is more lax than base version
src/posix/sdl/i_main.cpp:272:28: error: 'class std::exception' has no member named 'GetMessage'
2018-11-23 15:14:15 +02:00
Christoph Oelckers
bced30d1e3 - made CDoomError inherit from std::exception so that the main catch block can also deal with exceptions thrown by the STL.
- Also do not ignore empty exception messages as irrelevant. The only irrelevant exception type is CNoRunExit.
2018-11-23 10:18:52 +01:00
Magnus Norddahl
3e9f531b5f - add NUMA awareness to drawer threads 2018-11-22 14:48:09 +01:00
alexey.lysiuk
53bf598aee - restored screen clear in Cocoa backend when setting video mode
This still doesn't work well in windowed mode
In fullscreen the effect is quite noticeable thought
2018-11-03 13:09:30 +02:00
alexey.lysiuk
2e02b7e555 - fixed compilation of SDL backend
error: unknown type name 'OpenGLFrameBuffer'
2018-10-29 22:41:24 +02:00
alexey.lysiuk
d2c7ffb2ca - fixed crash with Cocoa backend on startup 2018-10-29 22:33:27 +02:00
alexey.lysiuk
2aac222d35 - fixed compilation on macOS
error: non-constant-expression cannot be narrowed from type 'unsigned long' to 'int' in initializer list
error: unknown type name 'OpenGLFrameBuffer'
2018-10-29 22:32:36 +02:00
alexey.lysiuk
77b8eb6547 - reverted macOS dark mode support with old SDKs
This feature causes several issues with NSOpenGLView:
* Mouse event coordinates are wrong in non-retina mode on HiDPI screen
* In retina mode only 1/4 of picture is visible and its scaling is incorrect
* Some sort of filtering is applied to frontbuffer picture
* Noticeable increase in CPU load because of that filtering

Linking with macOS 10.14 SDK leads to all these issues regardless of .plist option presence and its value
2018-10-08 15:50:56 +03:00
alexey.lysiuk
4d14642cad - enabled macOS dark mode support with pre-10.14 SDKs
https://developer.apple.com/documentation/appkit/nsappearancecustomization/choosing_a_specific_appearance_for_your_app
2018-10-07 11:10:29 +03:00
alexey.lysiuk
0e6af71376 - improved SDL_GetWindowBordersSize() pointer loading
https://forum.zdoom.org/viewtopic.php?t=61913
2018-09-04 18:19:01 +03:00
Braden Obrzut
aaee655eba - Added paths for all games on Steam for Linux since they now offer the ability to download all games for Proton/Wine.
- Check ~/.steam on Linux for the config since either they moved it at some point or my setup changed and that's where it is for me now.
2018-08-29 19:08:54 +02:00
alexey.lysiuk
12b8510574 - cleaned up inconsistent leading whitespaces
Bump copyright year as well
2018-08-18 16:05:33 +03:00
Marisa Kirisame
4e690b1f60 Fix SDL window "sticking" to the center of the screen after using vid_setsize. 2018-08-15 21:03:07 +02:00
Marisa Kirisame
66f616dc1a Set default window size to 80% of current display in SDL.
Make vid_setsize center window on current display in SDL.
2018-07-28 17:45:19 +02:00
alexey.lysiuk
477d2d0389 - center Cocoa window on vid_setsize CCMD 2018-07-28 18:17:25 +03:00
alexey.lysiuk
8fab9f8c13 - set default window size to 80% of screen in Cocoa backend 2018-07-28 15:05:06 +03:00
alexey.lysiuk
d58fe1f78a - fixed compilation of Cocoa backend
src/posix/cocoa/i_main.mm:262:2: error: use of undeclared identifier 'fullscreen'
2018-07-28 12:24:23 +03:00
Christoph Oelckers
0d8d860c93 - moved the win_* CVARs to a single platform independent location. 2018-07-28 10:27:41 +02:00
Christoph Oelckers
3b53f31da3 - default to fullscreen display. 2018-07-28 10:05:50 +02:00
Marisa Kirisame
79f0deaff4 Implement vid_setsize on SDL backend. 2018-07-25 10:34:52 +03:00
alexey.lysiuk
051521a898 - set minimum size for Cocoa window 2018-07-22 12:10:06 +03:00
alexey.lysiuk
43d472328c - implemented vid_setsize CCMD in Cocoa backend 2018-07-22 11:16:48 +03:00
alexey.lysiuk
4bb125d76c - removed obsolete list of video modes 2018-07-22 11:04:38 +03:00
alexey.lysiuk
f554120086 - output Mac model identifier to startup window 2018-07-15 14:28:21 +03:00
alexey.lysiuk
5c7dd28f7d - replaced deprecated macOS functions in paths handling 2018-07-15 13:20:36 +03:00
alexey.lysiuk
fc7af31cb9 - replaced usage of deprecated APIs to get macOS version 2018-07-15 13:20:36 +03:00
alexey.lysiuk
ccf056a888 - increased minimum macOS version to 10.9 in .plist 2018-07-15 13:20:36 +03:00
Christoph Oelckers
124fe63d00 Merge branch 'master' into modern 2018-07-14 10:24:41 +02:00
alexey.lysiuk
1d937b9f3c - removed Class identifier workaround from Cocoa backend 2018-06-30 11:43:30 +03:00
alexey.lysiuk
49f2e75ee4 - removed support of legacy OpenGL profile in Cocoa backend
Minimum OpenGL version is now 3.3 and so, the given legacy fallback doesn't make any sense
This increases required macOS version to 10.9 as on previous versions nothing but a black screen was rendered
2018-06-30 11:13:12 +03:00
alexey.lysiuk
a1d5833c8a - reset framebuffer pointer on destruction in Cocoa backend
Added debug validation of framebuffer pointer as well
2018-06-30 11:06:41 +03:00
alexey.lysiuk
651e735246 Merge branch 'master' into modern 2018-06-29 17:51:10 +03:00
alexey.lysiuk
ecb5bfec13 - removed obsolete code from POSIX backends 2018-06-29 17:50:19 +03:00
alexey.lysiuk
1ebc169d56 - fixed potential crash on fatal error in Cocoa backend
Early fatal error can be triggered when native OpenGL frame buffer is not created yet and DDummyFrameBuffer is still used
2018-06-29 17:50:19 +03:00
alexey.lysiuk
0703030be3 - simplified key repeat detection in SDL backend 2018-06-29 12:26:30 +03:00
alexey.lysiuk
0342bf532d - fixed excess keyboard events in SDL backend
https://forum.zdoom.org/viewtopic.php?t=61104
2018-06-29 12:20:49 +03:00
alexey.lysiuk
6e4c0fc416 - disabled annoying macOS spaces in SDL backend 2018-06-29 12:20:49 +03:00
alexey.lysiuk
c30505d02a - fixed excess keyboard events in Cocoa backend
https://forum.zdoom.org/viewtopic.php?t=61104
2018-06-29 12:20:49 +03:00
alexey.lysiuk
a968aeba8a - added detection of macOS Mojave 2018-06-28 11:06:19 +03:00
Christoph Oelckers
e7365be0d1 - renamed SystemFrameBuffer to SystemGLFrameBuffer.
... because with Vulkan there needs to be some hint what API this is for.
2018-06-24 20:16:30 +02:00
alexey.lysiuk
036307927a - refactored video part of Cocoa backend
Window related functionality is moved to framebuffer class
Video settings are now applied properly on startup
2018-06-24 14:20:20 +03:00
alexey.lysiuk
3936e3018d - added window position and size restoration to SDL backend 2018-06-23 16:22:29 +03:00
alexey.lysiuk
663ac919bd - removed unused header file 2018-06-23 16:21:35 +03:00
alexey.lysiuk
009acf3fb2 - added window position and size restoration to Cocoa backend 2018-06-23 12:45:44 +03:00
alexey.lysiuk
573758bc55 - removed obsolete code from Cocoa backend 2018-06-23 12:44:48 +03:00
Christoph Oelckers
b106f72741 - don't route calls to FMaterial::FlushAll through the framebuffer interface. 2018-06-20 22:18:31 +02:00
Christoph Oelckers
d2309af3d5 Merge remote-tracking branch 'remotes/origin/master' into modern
# Conflicts:
#	src/d_main.cpp
#	src/hwrenderer/scene/hw_weapon.cpp
2018-06-19 19:40:52 +02:00
Christoph Oelckers
548ccb1df4 - removed some references to r_viewpoint in game code
Mainly to reduce number of search results.
2018-06-19 11:20:36 +02:00
alexey.lysiuk
c6e4d6a333 - implemented fullscreen toggle in SDL backend
Made window resizable but its size and position are not saved yet
2018-06-18 22:53:19 +03:00
alexey.lysiuk
37a0c1d6c1 - implemented fullscreen toggle in Cocoa backend
Window size and position are not saved yet
2018-06-18 22:52:37 +03:00
Christoph Oelckers
bac435333b Merge remote-tracking branch 'remotes/origin/master' into modern 2018-06-18 00:24:49 +02:00
Christoph Oelckers
babe55819e - fullscreen toggle and some cleanup. Not fully working yet. 2018-06-17 22:11:35 +02:00
alexey.lysiuk
89ce74443b - adapted SDL backend to new video mode handling 2018-06-17 22:41:05 +03:00
alexey.lysiuk
42587761c7 - adapted Cocoa backend to new video mode handling 2018-06-17 22:35:50 +03:00
Christoph Oelckers
b65b83edb3 - removed the hard screen resolution switch that still was present on Windows and cleaned up the entire video backend code from the remaining support code for this.
Like Linux and macOS this will only support borderless fullscreen in the active desktop resolution now, which is what modern systems need.
The list of discrete resolutions has been removed as it makes no sense anymore with a fixed video mode - all the other scaling options remain active, though.
2018-06-17 20:08:35 +02:00
alexey.lysiuk
5cf3dbfd5b - fixed compilation of SDL backend
src/posix/sdl/sdlglvideo.cpp:200:4: error: use of undeclared identifier 'I_ClosestResolution'
2018-06-17 14:51:04 +03:00
alexey.lysiuk
f2918b748f - deleted leftover declaration in Cocoa backend 2018-06-17 14:39:05 +03:00
Christoph Oelckers
dc2a5b0cc9 - consolidated the 3 identical versions of I_CheckResolution and I_ClosestResolution. 2018-06-17 12:30:01 +02:00
Rachael Alexanderson
77956fc485 - remove ARM specific gl_es definition since it's not even really much different from the main line definition, anyhow 2018-06-09 13:40:39 -04:00
alexey.lysiuk
352f93c066 - deleted now useless code from Cocoa backend
Let's rely on cross-platform code to manage window dimensions and screen resolution
2018-06-03 17:48:58 +03:00
alexey.lysiuk
f8f1148c59 - fixed mouse cursor positioning in menu for Cocoa backend
With video resolution scaling enabled engine coordinates of mouse cursor were wrong
2018-06-03 17:48:58 +03:00
Christoph Oelckers
3f56e02352 Revert "- fix compile on non-Windows targets"
This reverts commit 781cc62f89.

This gets in the way of a real fix.
2018-05-18 00:03:58 +02:00
Rachael Alexanderson
781cc62f89 - fix compile on non-Windows targets 2018-05-17 17:47:42 -04:00
Christoph Oelckers
c0837f42bd - gl_system.h as well, in particular this has no place in hw_* files. 2018-05-16 23:34:52 +02:00
alexey.lysiuk
fd5df6e8d1 - Cocoa: ability to use drag and drop with custom IWADs 2018-05-09 12:47:11 +03:00
alexey.lysiuk
23dcc27542 - Cocoa: proper defaults in .plist 2018-05-09 12:33:19 +03:00
David Carlier
1b68b69ed8 Needed headers for time and WIF* 2018-05-08 22:04:20 +03:00
alexey.lysiuk
78c06554af - proper handle pixel format creation errors in Cocoa backend 2018-05-06 17:53:53 +03:00
alexey.lysiuk
7fcefa2ed1 - SDL: clear button state when switching from/to GUI input
https://forum.zdoom.org/viewtopic.php?t=60451
2018-05-06 14:37:04 +03:00
alexey.lysiuk
2be84dc636 - skip rendering when application is not active
Use vid_activeinbackground CVAR to override this behavior
2018-05-04 11:24:37 +03:00
Christoph Oelckers
06d20e13b8 - cleaned up the gamma correction code.
This had accumulated quite a bit of cruft by now and parts of it should be in non OpenGL code.
2018-04-29 13:45:53 +02:00
alexey.lysiuk
8dfd1e6490 Removed unsupported versions of macOS from detection list 2018-04-27 11:04:19 +03:00
alexey.lysiuk
2ae8d39441 Removed all superfluous #include's
Automatically optimized by CLion IDE with manual corrections
2018-04-24 14:30:35 +03:00
alexey.lysiuk
03ffb30c39 Enabled custom window title in SDL backend 2018-04-09 20:47:49 +02:00
alexey.lysiuk
e6e2b11167 Set common name for system-specific framebuffer class
Implementation details are hidden as much as possible in platform-specific source files
Reduced number of included header files
2018-04-09 20:47:49 +02:00
alexey.lysiuk
5a4307160e Fixed compilation of SDL backend 2018-04-08 13:55:46 +03:00
alexey.lysiuk
1c89de25dd Fixed compilation of Cocoa backend 2018-04-08 13:55:46 +03:00
Christoph Oelckers
df4f435952 - merged vid_renderer, swtruecolor and r_polyrender into one CVAR to reduce menu clutter.
- with renderers freely switchable, some shortcuts in the 3D floor code had to be removed, because now the hardware renderer can get FF_THISINSIDE-flagged 3D floors.
- changed handling of attenuated lights in the legacy renderer to be adjusted when being rendered instead of when being spawned. For the software renderer the light needs to retain its original values.
2018-04-07 23:30:28 +02:00
Christoph Oelckers
5fbc723842 - live switching of the renderer works. 2018-04-07 12:59:04 +02:00
Christoph Oelckers
221beec979 - added palette shader and fixed a few things. 2018-04-07 12:17:23 +02:00
Christoph Oelckers
d474b849a5 - removed the remaining calls from the FRenderer interface from the main game code.
This does not work with a setup where the same backend is driving both renderers.
Most of this is now routed through 'screen', and the decision between renderers has to be made inside the actual render functions.
The software renderer is still driven by a thin opaque interface to keep it mostly an isolated module.
2018-04-04 00:21:25 +02:00
Christoph Oelckers
9ba32cb994 - with the new order of things we need the software renderer to be always available. 2018-04-03 20:14:26 +02:00
Christoph Oelckers
248a29bf06 - resorted portal render data.
Compiles but does not work...
2018-04-01 22:26:57 +02:00
Christoph Oelckers
711a88bab3 - consolidated cycle_t and glcycle_t because aside from glcycle_t's ability to be deactivated when no profiling takes place they did exactly the same thing. 2018-04-01 13:24:03 +02:00
Christoph Oelckers
1461059dae - moved contents of gl_templates.h to files outside of gl/ 2018-04-01 11:59:12 +02:00
Christoph Oelckers
6d6196388e - made SPROFS a more usable feature.
This was originally invented to fix the sprite offsets for the hardware renderer.
Changed it so that it doesn't override the original offsets but acts as a second set.
A new CVAR has been added to allow controlling the behavior per renderer.
2018-03-31 10:37:46 +02:00
Christoph Oelckers
6cd26dec01 - remove some dead code. 2018-03-31 00:25:15 +02:00
Christoph Oelckers
a001a5304d - removed the old software renderer framebuffers for Windows
This cannot be refactored with the old code still present and done properly both renderers should share what they can.
2018-03-30 23:18:25 +02:00
Christoph Oelckers
1e5fbc1423 Merge remote-tracking branch 'remotes/origin/master' into 2D_Refactor
# Conflicts:
#	src/posix/cocoa/i_video.mm
2018-03-30 22:06:17 +02:00
alexey.lysiuk
fdd93d704d Merged list of video modes for Cocoa and SDL backends
https://forum.zdoom.org/viewtopic.php?t=59990
2018-03-28 15:12:07 +03:00
Christoph Oelckers
29ad081368 - removed remaining DirectDraw code and a few other things that are no longer being used. 2018-03-27 21:04:01 +02:00