Commit graph

516 commits

Author SHA1 Message Date
Magnus Norddahl
756c593e96 - create a new error class for vulkan errors as they are only recoverable during initialization (unlike CRecoverableError which is recoverable during normal processing)
- improve vulkan errors by including the status code returned by vulkan if they fail
2019-05-23 14:09:05 +02:00
alexey.lysiuk
0c40faf0b4 - improved control over MoltenVK logging capabilities 2019-05-18 17:27:13 +03:00
alexey.lysiuk
8d36f0a0cf - tuned internal MoltenVK settings for better performance
See https://github.com/KhronosGroup/MoltenVK/issues/581#issuecomment-487293665
2019-04-29 10:51:39 +03:00
alexey.lysiuk
20cc066dc7 - made Vulkan Cocoa view opaque
It is recommended to make content view opaque like NSOpenGLView
I didn't notice any difference in performance though
2019-04-29 10:46:50 +03:00
alexey.lysiuk
6b5f7b4763 - destroy SDL window on Vulkan to OpenGL fallback
https://forum.zdoom.org/viewtopic.php?t=64412
2019-04-23 14:42:43 +03:00
Christoph Oelckers
146f7035d8 - fixed: The Vulkan device may only be deleted if Vulkan is present. 2019-04-19 08:36:19 +02:00
Rachael Alexanderson
09a2b53b21 - rename vid_backend to vid_enablevulkan. Also changed the CVAR from a 0-state enable to 1-state. So vid_enablevulkan==1 enables vulkan now. This should be less confusing. 2019-04-16 08:10:57 -04:00
alexey.lysiuk
fb51b5d137 - fixed compilation of SDL backend
src/posix/sdl/sdlglvideo.cpp:358:10: error: ‘MIN_WIDTH’ is not a member of ‘Priv’
src/posix/sdl/sdlglvideo.cpp:358:33: error: ‘MIN_HEIGHT’ is not a member of ‘Priv’
src/posix/sdl/sdlglvideo.cpp:360:7: error: ‘MIN_WIDTH’ is not a member of ‘Priv’
src/posix/sdl/sdlglvideo.cpp:361:7: error: ‘MIN_HEIGHT’ is not a member of ‘Priv’
2019-04-07 17:26:32 +03:00
Rachael Alexanderson
efa9284141 - consolidate minimum screen resolution so that it's easier to change 2019-04-07 06:49:54 -04:00
Rachael Alexanderson
ead3695844 Merge branch 'master' of https://github.com/coelckers/gzdoom into vulkan2
# Conflicts:
#	src/posix/sdl/gl_sysfb.h
2019-03-31 03:49:08 -04:00
Christoph Oelckers
ab16d3cd72 - limit minimum screen size to 640x400.
The current menu system simply does not work that well with 320x200, rendering the game hard to use at that tiny screen size. This is a clear case where the work required to keep it operational stands in no relation to the benefit.
2019-03-31 09:13:22 +02:00
Magnus Norddahl
9f0f659db0 - remove old vid_maxfps implementations as they were garbage anyway and the new one works on all the platforms 2019-03-26 11:10:17 +01:00
alexey.lysiuk
651d749eea - limited MoltenVK logging without vk_debug
If vk_debug is set to zero (which is by default) only errors will be reported
2019-03-24 16:19:39 +02:00
alexey.lysiuk
15e0b6c8a7 - gave vid_autoswitch CVAR a priority over vk_device selection
Try to mimic OpenGL GPU selection behavior with MoltenVK when automated graphics switching is disabled
The CVAR isn't exposed in menu and its target audience is advanced users only
2019-03-24 16:18:08 +02:00
Christoph Oelckers
a0b0467e91 - restrict Vulkan to 64 bit builds. 2019-03-24 14:34:48 +01:00
alexey.lysiuk
48a5476ec4 - fixed compilation with older macOS SDK like 10.9
src/posix/cocoa/i_video.mm:564:23: error: property 'layer' not found on object of type 'id'
2019-03-23 17:27:47 +02:00
Rachael Alexanderson
dd4ef010ab Merge remote-tracking branch 'origin/master' into vulkan2 2019-03-18 04:05:19 -04:00
alexey.lysiuk
be9a43f177 - added temp hack for perf issue with Metal layer in fullscreen 2019-03-17 18:20:24 +02:00
alexey.lysiuk
97fc3aa9a6 - avoid Vulkan initialization when it's disabled in Cocoa backend 2019-03-17 14:45:47 +02:00
alexey.lysiuk
83de8ae5a0 - fixed white flash on startup with Metal-based view 2019-03-17 14:44:16 +02:00
alexey.lysiuk
250e4ed622 - do not use OpenGL function to clear screen in Cocoa backend
In fullscreen mode there is a white flash (of the default background color) on startup
To overcome this an explicit glClear() with flush buffers was used
In order to make video mode switch more generic, any backend specific functionality should be avoided here
2019-03-17 14:42:14 +02:00
Christoph Oelckers
ba13a540e4 - changed default graphics substitution rules to be more localization friendly.
The default was changed to replace graphics if only known content is affected.
This also required blocking the feature for Hacx, Harmony and Action Doom 2 which have no localization yet and would fall back on Doom's texts if not blocked.
2019-03-17 09:27:40 +01:00
Christoph Oelckers
dbd6c2eabf - removed the automatic system language detection for Windows.
Default language is now always American English, just like on Linux and macOS.
2019-03-16 00:07:18 +01:00
alexey.lysiuk
3dd25bd4c0 - implemented OpenGL / Vulkan switch in Cocoa backend 2019-03-12 16:12:23 +02:00
alexey.lysiuk
7b5eedea32 - implemented OpenGL / Vulkan switch in SDL backend 2019-03-12 16:12:14 +02:00
alexey.lysiuk
f2a311dfca - fixed mouse cursor positioning in Cocoa backend with Vulkan renderer 2019-03-10 13:37:36 +02:00
alexey.lysiuk
34cbb7c276 - added HiDPI support to Cocoa backend with Vulkan renderer 2019-03-10 13:36:18 +02:00
alexey.lysiuk
0909a67676 - removed explicit deallocation of Cocoa window 2019-03-10 11:00:24 +02:00
alexey.lysiuk
02ed758447 Merge branch 'master' into vulkan2
# Conflicts:
#	src/posix/cocoa/i_video.mm
2019-03-09 16:45:49 +02:00
alexey.lysiuk
bc69941514 - fixed compilation of Cocoa backend
src/posix/cocoa/i_video.mm:297:2: error: use of undeclared identifier 'SetFlash'
2019-03-09 16:34:54 +02:00
alexey.lysiuk
965acde9c0 - added initial support of Vulkan renderer to Cocoa backend 2019-03-08 16:47:02 +02:00
alexey.lysiuk
c30b1a1f4a - split base and OpenGL Cocoa framebuffers properly 2019-03-08 14:39:00 +02:00
alexey.lysiuk
108ea066f3 - added initial support of Vulkan to SDL backend
Removed all platform-specific code from vulkan device
2019-03-06 13:38:45 +02:00
Magnus Norddahl
319099fee9 Merge remote-tracking branch 'origin/master' into vulkan2 2019-03-05 03:07:30 +01:00
alexey.lysiuk
a3554bda70 - replaced all usages of insecure vsprintf() function 2019-03-04 17:35:38 +02:00
alexey.lysiuk
802d37f377 - fixed compilation of Linux target
Base and OpenGL framebuffer classes still require proper splitting
2019-03-04 12:47:00 +02:00
alexey.lysiuk
7efa231e4e - fixed compilation of macOS target
Base and OpenGL framebuffer classes still require proper splitting
2019-03-04 12:46:37 +02:00
Christoph Oelckers
e091369a38 - removed FCriticalSection and replaced all of its uses with std::mutex.
There's really no need for a non-standard solution here anymore with C++11.
This also fixes an unreleased lock in the WildMidi code.
2019-02-22 20:24:24 +01:00
Christoph Oelckers
d15e3391a0 Merge remote-tracking branch 'remotes/origin/master' into localization
# Conflicts:
#	src/v_font.cpp
2019-02-16 17:35:15 +01:00
Robert Cochran
07e0323771 Add handling of left and right mousewheel events to the SDL2 input path 2019-02-16 17:23:14 +01:00
Christoph Oelckers
64685705d0 - made the console Unicode-capable.
This also necessitated some character remapping in the console font to move the Windows-1252 extra characters to their proper Unicode code points.
2019-02-16 13:05:19 +01:00
Christoph Oelckers
5f574033b5 pass full Unicode characters to EV_GUI_Char for Linux and macOS.
The Linux backend looked like it didn't handle anything non-ASCII at all, but this all needs to be tested.
Windows will be a bit more work because it requires using the Unicode API for creating the main window.
2019-02-14 14:29:49 +01:00
alexey.lysiuk
8137162ca0 - fixes compilation of POSIX targets
src/posix/cocoa/i_input.mm:95:22: error: use of undeclared identifier 'E_CheckUiProcessors'
src/posix/cocoa/i_input.mm:200:21: error: use of undeclared identifier 'E_CheckRequireMouse'
src/posix/sdl/i_input.cpp:183:19: error: use of undeclared identifier 'E_CheckUiProcessors'
src/events.cpp:540:1: error: pasting formed '::RenderFrame', an invalid preprocessing token
src/events.cpp:541:1: error: pasting formed '::WorldLightning', an invalid preprocessing token
src/events.cpp:542:1: error: pasting formed '::WorldTick', an invalid preprocessing token
src/events.cpp:543:1: error: pasting formed '::UiTick', an invalid preprocessing token
src/events.cpp:544:1: error: pasting formed '::PostUiTick', an invalid preprocessing token
2019-02-03 11:19:17 +02:00
Christoph Oelckers
45dc9a7b47 - renamed the level variables.
currentUILevel is now primaryLevel.
For ZScript, currentVMLevel was added. This is also exported as 'level' and will change as needed.
This also means that no breaking deprecations will be needed in the future, because in order to sandbox a level only 4 variables need to be handled: level, players, playeringame and consoleplayer.
The remaining global variables are not relevant for the level state.

The static 'level' has been mostly removed from the code except some places that still need work.
2019-02-02 00:25:51 +01:00
alexey.lysiuk
5278274acf - fixed compilation errors with POSIX targets
src/posix/cocoa/i_video.mm:559:2: error: use of undeclared identifier 'atterm'
src/posix/sdl/hardware.cpp:85:28: error: ‘atterm’ was not declared in this scope
src/posix/sdl/i_input.cpp:261:10: error: ‘gamestate’ was not declared in this scope
src/posix/sdl/i_input.cpp:261:23: error: ‘GS_LEVEL’ was not declared in this scope
src/posix/sdl/i_input.cpp:263:48: error: ‘GS_INTERMISSION’ was not declared in this scope
src/posix/sdl/i_input.cpp:263:80: error: ‘GS_FINALE’ was not declared in this scope
src/posix/sdl/i_system.cpp:115:25: error: ‘atterm’ was not declared in this scope
src/posix/sdl/i_system.cpp:372:30: error: invalid use of incomplete type ‘const struct dirent’
src/posix/sdl/i_system.cpp:375:42: error: ‘findstate_t’ has not been declared
src/posix/sdl/i_system.cpp:391:12: error: request for member ‘current’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:392:12: error: request for member ‘count’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:392:56: error: request for member ‘namelist’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:393:22: error: ‘alphasort’ was not declared in this scope
src/posix/sdl/i_system.cpp:393:31: error: ‘scandir’ was not declared in this scope
src/posix/sdl/i_system.cpp:394:16: error: request for member ‘count’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:401:31: error: ‘findstate_t’ has not been declared
src/posix/sdl/i_system.cpp:403:2: error: ‘findstate_t’ was not declared in this scope
src/posix/sdl/i_system.cpp:403:15: error: ‘state’ was not declared in this scope
src/posix/sdl/i_system.cpp:403:37: error: expected primary-expression before ‘)’ token
src/posix/sdl/i_system.cpp:404:33: error: request for member ‘count’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:406:39: error: request for member ‘count’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:413:2: error: ‘findstate_t’ was not declared in this scope
src/posix/sdl/i_system.cpp:413:15: error: ‘state’ was not declared in this scope
src/posix/sdl/i_system.cpp:413:37: error: expected primary-expression before ‘)’ token
src/posix/sdl/i_system.cpp:425:16: error: ‘findstate_t’ was not declared in this scope
src/posix/sdl/i_system.cpp:425:29: error: expected primary-expression before ‘const’
src/posix/sdl/i_system.cpp:426:1: error: expected ‘,’ or ‘;’ before ‘{’ token
src/posix/sdl/i_main.cpp:160:6: error: ‘gamestate’ was not declared in this scope
src/posix/sdl/i_main.cpp:160:19: error: ‘GS_LEVEL’ was not declared in this scope
src/posix/sdl/i_main.cpp:160:44: error: ‘GS_TITLELEVEL’ was not declared in this scope
src/posix/sdl/i_main.cpp:217:18: error: ‘atterm’ was not declared in this scope
src/posix/sdl/i_main.cpp:242:11: error: ‘I_Quit’ was not declared in this scope
src/gameconfigfile.cpp:126:27: error: ‘SHARE_DIR’ was not declared in this scope
src/scripting/decorate/thingdef_parse.cpp:929:2: error: use of undeclared identifier 'strlwr'; did you mean 'strlen'?
src/scripting/decorate/thingdef_parse.cpp:937:3: error: use of undeclared identifier 'strlwr'; did you mean 'strlen'?
src/scripting/decorate/thingdef_states.cpp:564:2: error: use of undeclared identifier 'strlwr'; did you mean 'strlen'?
src/scripting/vm/jit_runtime.cpp:957:2: error: ‘unique_ptr’ is not a member of ‘std’
src/scripting/vm/jit_runtime.cpp:957:38: error: expected primary-expression before ‘>’ token
src/scripting/vm/jit_runtime.cpp:957:40: error: ‘nativeSymbols’ was not declared in this scope
src/utility/cmdlib.cpp:962:2: error: ‘DIR’ was not declared in this scope
src/utility/cmdlib.cpp:962:7: error: ‘directory’ was not declared in this scope
src/utility/cmdlib.cpp:962:34: error: ‘opendir’ was not declared in this scope
src/utility/cmdlib.cpp:967:33: error: ‘readdir’ was not declared in this scope
src/utility/cmdlib.cpp:969:10: error: invalid use of incomplete type ‘struct ScanDirectory(TArray<FFileList>&, const char*)::dirent’
src/utility/cmdlib.cpp:973:34: error: invalid use of incomplete type ‘struct ScanDirectory(TArray<FFileList>&, const char*)::dirent’
src/utility/cmdlib.cpp:985:20: error: ‘closedir’ was not declared in this scope
2019-02-01 11:08:58 +02:00
Christoph Oelckers
f6a91e1722 - moved the I_Error prototypes to doomerrors.h to avoid having to include the low level system header for this. 2019-01-31 19:38:04 +01:00
Christoph Oelckers
0b4862480e - fixed macOS compilation. 2019-01-31 02:05:33 +01:00
Christoph Oelckers
a7746278a8 - a few remaining simple ones
This also removes a few pointless comments that popped up and consolidates setting a level's music into a subfuntion.
2019-01-28 01:25:52 +01:00
Rachael Alexanderson
dc27011370 - remove vid_hwgamma, force always use shader gamma
*** note to drfrag: Please don't cherry-pick this commit. Systems that do not use renderbuffers will still need this feature!
2019-01-23 21:50:11 +01:00
Christoph Oelckers
a73c065811 - replaced several explicit allocations with TArrays. 2018-12-17 18:28:04 +01:00