summaryrefslogtreecommitdiff
path: root/platform
AgeCommit message (Collapse)Author
2020-03-12Merge pull request #36994 from akien-mga/typedefs-cleanupRémi Verschelde
typedefs: Cleanup unused macros and unnecessary checks
2020-03-11typedefs: Cleanup unused macros and unnecessary checksRémi Verschelde
We now require a compiler with C++17 support, so we don't need to check for features added to GCC 5 or Clang 3.2. Clang builtin availability checks were unused anyway as Clang defines `__GNUC__` as it's also a GNU C implementation. Fixes #36986.
2020-03-11[HTML5] Refactor JS, threads support, closures.Fabio Alessandrelli
- Refactored the Engine code, splitted across files. - Use MODULARIZE option to build emscripten code into it's own closure. - Enable lto support (saves ~2MiB in release). - Enable optional closure compiler pass for JS and generated code. - Enable optional pthreads support. - Can now build with tools=yes (not much to see yet). - Dropped some deprecated code for older toolchains.
2020-03-11AudioDriverJavascript uses IDHandler.Fabio Alessandrelli
This makes closure compiler happy, avoiding globals and potentially undefined variables.
2020-03-11Linux: Add Mesa 20 "Intel" to prime detectionRémi Verschelde
Diff in `glxinfo` between Mesa 19.3.4 and 20.0.1: ```diff -OpenGL vendor string: Intel Open Source Technology Center -OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 630 (Kaby Lake GT2) -OpenGL core profile version string: 4.6 (Core Profile) Mesa 19.3.4 +OpenGL vendor string: Intel +OpenGL renderer string: Mesa Intel(R) HD Graphics 630 (KBL GT2) +OpenGL core profile version string: 4.6 (Core Profile) Mesa 20.0.1 ```
2020-03-11Merge pull request #36905 from Faless/js/restore_and_ciRémi Verschelde
Resurrect HTML5 platform, add it to CI (no rendering yet)
2020-03-10Revert "Change LINKFLAGS to FRAMEWORKS which is supported since"Rémi Verschelde
This reverts commit c924e83a646f8a6d972ccd4d009acc323a6be158. SCons `FRAMEWORKS` is, according to their latest docs, only supported "On Mac OS X with gcc". While the "with gcc" part seems bogus, #36795 did introduce a link failure for our osxcross toolchain for compiling macOS binaries from Linux. SCons probably fails to detect this as a macOS target and does not use its `FRAMEWORKS` logic properly. So using `LINKFLAGS` as we used to is the more portable solution.
2020-03-09Merge pull request #36751 from Faless/debugger/threads_and_profilersRémi Verschelde
ScriptDebugger refactor, threading, profilers.
2020-03-09Fix initialization of the GodotPayment pluginfhuya
The `onGLRegisterPluginWithGodotNative()` method is supposed to be invoked only by `Godot`.
2020-03-08Refactor ScriptDebugger.Fabio Alessandrelli
EngineDebugger is the new interface to access the debugger. It tries to be as agnostic as possible on the data that various subsystems can expose. It allows 2 types of interactions: - Profilers: A subsystem can register a profiler, assigning it a unique name. That name can be used to activate the profiler or add data to it. The registered profiler can be composed of up to 3 functions: - Toggle: called when the profiler is activated/deactivated. - Add: called whenever data is added to the debugger (via `EngineDebugger::profiler_add_frame_data`) - Tick: called every frame (during idle), receives frame times. - Captures: (Only relevant in remote debugger for now) A subsystem can register a capture, assigning it a unique name. When receiving a message, the remote debugger will check if it starts with `[prefix]:` and call the associated capture with name `prefix`. Port MultiplayerAPI, Servers, Scripts, Visual, Performance to the new profiler system. Port SceneDebugger and RemoteDebugger to the new capture system. The LocalDebugger also uses the new profiler system for scripts profiling.
2020-03-08OS_Javascript temporarly uses dummy rasterizer.Fabio Alessandrelli
2020-03-08Fix Javascript platform after PoolVector removal.Fabio Alessandrelli
Eval should be rechecked.
2020-03-06Trim the whitespace around the plugins names.fhuya
2020-03-06assimp: Clean and document buildsystem, prepare for unbundlingRémi Verschelde
- Improve the SCsub to allow unbundling and remove unnecessary code. - Move files around to match upstream source. - Re-sync with upstream commit 308db73d0b3c2d1870cd3e465eaa283692a4cf23 to ensure we don't have local modifications. - Doesn't actually build against current version 5.0.1 due to the lack of the new ArmaturePopulate API that Gordon authored. We'll have to wait for a public release with that API (5.1?) to enable unbundling.
2020-03-06Replace IOHIDDeviceRegisterRemovalCallback with ↵bruvzg
IOHIDManagerRegisterDeviceRemovalCallback to fix gamepad disconnection callback on macOS Catalina.
2020-03-05Re-architecture of the Godot Android plugin.fhuya
2020-03-05Provides a base implementation of the Vulkan surface view (VkSurfaceView.kt) ↵fhuya
and its accompanying components. The implementation is meant to be extended and updated in order to integrate it with the existing Godot java and native codebase.
2020-03-05Merge pull request #36752 from RandomShaper/rework_semaphoreRémi Verschelde
Drop old semaphore implementation
2020-03-05Merge pull request #36795 from hungrymonkey/issue_36720Rémi Verschelde
Change LINKFLAGS to FRAMEWORKS which is supported since Scons release 0.96.91
2020-03-05Merge pull request #36798 from m4gr3d/android_codebase_misc_cleanupRémi Verschelde
Miscellaneous cleanup for the Android codebase
2020-03-04Miscellaneous cleanup for the Android codebase:fhuya
- update gradle plugins versions - add formatting rules for AndroidManifest and gradle build files - cleanup java_godot_lib_jni Note: logic was mostly moved around and no new logic/functionality was added.
2020-03-04Merge pull request #36791 from akien-mga/scons-expand-cxxRémi Verschelde
SCons: Expand env variables to check compiler version
2020-03-04Change LINKFLAGS to FRAMEWORKS which is supported sincehungrymonkey
Scons release 0.96.91 Fixes the link errors below clang: error: no such file or directory: 'Carbon' clang: error: no such file or directory: 'AudioUnit' clang: error: no such file or directory: 'CoreAudio' clang: error: no such file or directory: 'CoreMIDI' clang: error: no such file or directory: 'IOKit' clang: error: no such file or directory: 'ForceFeedback' clang: error: no such file or directory: 'CoreVideo' clang: error: no such file or directory: 'AVFoundation' clang: error: no such file or directory: 'CoreMedia' clang: error: no such file or directory: 'Metal' clang: error: no such file or directory: 'QuartzCore' Tested on System Version: macOS 10.15.3 (19D76) SCons by Steven Knight et al.: script: v3.1.2.bee7caf9defd6e108fc2998a2520ddb36a967691, 2019-12-17 02:07:09, by bdeegan on octodog engine: v3.1.2.bee7caf9defd6e108fc2998a2520ddb36a967691, 2019-12-17 02:07:09, by bdeegan on octodog engine path: ['/usr/local/Cellar/scons/3.1.2_1/libexec/scons-local/SCons'] Xcode 11.3.1 Build version 11C504 Apple clang version 11.0.0 (clang-1100.0.33.17) Target: x86_64-apple-darwin19.3.0 Closes #36720
2020-03-04Merge pull request #36682 from nekomatata/android-compilation-fixRémi Verschelde
Compilation fixes on Android
2020-03-04SCons: Expand env variables to check compiler versionRémi Verschelde
Scons' `Environment.subst()` does that, and was already used in the other place where we query an env variable (`env["LINK"]` in x11 code). Fixes `3.2` iOS build after cherry-pick of #36559 (previously it only ran for GCC code, not iOS's Clang), and the same issue would likely affect `master` if iOS builds were enabled right now.
2020-03-04Merge pull request #36069 from RandomShaper/imvu/improve_drives_uxRémi Verschelde
Improve UX of drive letters
2020-03-04Compilation fixes on AndroidPouleyKetchoupp
2020-03-03os: execute parse the command output from utf8Mateo Dev .59
2020-03-03Merge pull request #36557 from Schroedi/fix_html_touchFabio Alessandrelli
Fixes touch events for HTML
2020-03-03Drop old semaphore implementationPedro J. Estébanez
- Removed platform-specific implementations. - Now all semaphores are in-object, unless they need to be conditionally created. - Similarly to `Mutex`, provided a dummy implementation for when `NO_THREADS` is defined. - Similarly to `Mutex`, methods are made `const` for easy use in such contexts. - Language bindings updated: `wait()` and `post()` are now `void`. - Language bindings updated: `try_wait()` added. Bonus: - Rewritten the `#ifdef` in `mutex.h` to meet the code style.
2020-03-03Improve UX of drive lettersPedro J. Estébanez
Namely, move the drive dropdown to just the left of the path text box and don't include the former in the latter. This improves the UX on Windows. In the UNIX case, since its concept of drives is (ab)used to provide shortcuts to useful paths, its dropdown is kept at the original location.
2020-03-01Merge pull request #18020 from bruvzg/input_fix_non_latin_and_add_hw_scancodesRémi Verschelde
Fix non-latin layout scancodes on Linux, adds access to physical scancodes.
2020-02-28Merge pull request #36556 from RandomShaper/rework_mutexRémi Verschelde
Reimplement `Mutex` with C++'s `<mutex>` (plus more)
2020-02-27Merge pull request #36572 from qarmin/coverageRémi Verschelde
Added code coverage support to Godot
2020-02-26Reimplement Mutex with C++'s <mutex>Pedro J. Estébanez
Main: - It's now implemented thanks to `<mutex>`. No more platform-specific implementations. - `BinaryMutex` (non-recursive) is added, as an alternative for special cases. - Doesn't need allocation/deallocation anymore. It can live in the stack and be part of other classes. - Because of that, it's methods are now `const` and the inner mutex is `mutable` so it can be easily used in `const` contexts. - A no-op implementation is provided if `NO_THREADS` is defined. No more need to add `#ifdef NO_THREADS` just for this. - `MutexLock` now takes a reference. At this point the cases of null `Mutex`es are rare. If you ever need that, just don't use `MutexLock`. - Thread-safe utilities are therefore simpler now. Misc.: - `ScopedMutexLock` is dropped and replaced by `MutexLock`, because they were pretty much the same. - Every case of lock, do-something, unlock is replaced by `MutexLock` (complex cases where it's not straightfoward are kept as as explicit lock and unlock). - `ShaderRD` contained an `std::mutex`, which has been replaced by `Mutex`.
2020-02-26Added code coverate support to GodotRafał Mikrut
2020-02-26SCons: Fix get_compiler_version() to return intsRémi Verschelde
Otherwise comparisons would fail for compiler versions above 10. Also simplified code somewhat to avoid using subprocess too much needlessly.
2020-02-26Fixes touch events for HTMLChristoph Schroeder
Without this patch, the following exception is thrown when the touch screen is used: TypeError: e.getBoundingClientRect is not a function. No touch events arrive in the engine. From my testing, this PR fixes the issue and behaves as expected. Tested with godot-demo-projects/misc/multitouch_view/, emscripten 1.39.8 and Firefox mobile emulator as well as FF on Android
2020-02-25doc: Sync classref for Packed{Int,Float}{32,64}Array additionsRémi Verschelde
2020-02-25Variant: Added 64-bit packed arrays, renamed Variant::REAL to FLOAT.Juan Linietsky
- Renames PackedIntArray to PackedInt32Array. - Renames PackedFloatArray to PackedFloat32Array. - Adds PackedInt64Array and PackedFloat64Array. - Renames Variant::REAL to Variant::FLOAT for consistency. Packed arrays are for storing large amount of data and creating stuff like meshes, buffers. textures, etc. Forcing them to be 64 is a huge waste of memory. That said, many users requested the ability to have 64 bits packed arrays for their games, so this is just an optional added type. For Variant, the float datatype is always 64 bits, and exposed as `float`. We still have `real_t` which is the datatype that can change from 32 to 64 bits depending on a compile flag (not entirely working right now, but that's the idea). It affects math related datatypes and code only. Neither Variant nor PackedArray make use of real_t, which is only intended for math precision, so the term is removed from there to keep only float.
2020-02-25Rename `scancode` to `keycode`.bruvzg
Add `physical_keycode` (keyboard layout independent keycodes) to InputEventKey and InputMap. Fix non-latin keyboard layout keycodes on Linux/X11 (fallback to physical keycodes).
2020-02-23Merge pull request #36478 from qarmin/supsicious_operators_everywhereRémi Verschelde
Fix suspicious | and + operators
2020-02-23Fix suspicious | and + operatorsRafał Mikrut
2020-02-23Replace FALLTHROUGH macro by C++17 [[fallthrough]]Rémi Verschelde
This attribute is now part of the standard we target so we no longer need compiler-specific hacks. Also enables -Wimplicit-fallthrough for Clang now that we can properly support it. It's already on by default for GCC's -Wextra. Fixes new warnings raised by Clang's -Wimplicit-fallthrough.
2020-02-22Travis: Use Ubuntu 18.04 (bionic) as base imageRémi Verschelde
It's now available and allows us to have a better default environment, with GCC 7.4.0 and Clang 7. We now need GCC 7+ for C++17 support so it's more efficient to upgrade the image than to install it on Ubuntu 16.04 (xenial). Also fixes a couple -Wdeprecated-declarations warnings on macOS now that we build against macOS 10.12.
2020-02-22SCons: Bump required C++ standard to C++17Rémi Verschelde
As per #36436, we now need C++17's guaranteed copy elision feature to solve ambiguities in Variant. Core developers discussed the idea to move from C++14 to C++17 as our minimum required C++ standard, and all agreed. Note that this doesn't mean that Godot is going to be written in "modern C++", but we'll use modern features where they make sense to simplify our "C with classes" codebase. Apart from new code written recently, most of the codebase still has to be ported to use newer features where relevant. Proper support for C++17 means that we need recent compiler versions: - GCC 7+ - Clang 6+ - VS 2017 15.7+ Additionally, C++17's `std::shared_mutex` (conditionally used by `vk_mem_alloc.h` when C++17 support is enabled) is only available in macOS 10.12+, so we increase our minimum supported version.
2020-02-21Stub out Vulkan context for iPhoneSam Green
2020-02-21Add use_static_mvk optionSam Green
2020-02-21Update detect.pySam Green
2020-02-21Resolve iOS and GLES compilation failuresSam Green