Commit Graph

919 Commits

Author SHA1 Message Date
Phillip Stephens 8114361966
Merge pull request #20 from lioncash/move
BooObject: Make ObjToken interface noexcept where applicable
2019-08-17 22:56:26 -07:00
Phillip Stephens 9c210e5989
Merge pull request #22 from lioncash/constexpr
System: Make operator|= and operator&= for enums constexpr
2019-08-17 22:56:17 -07:00
Lioncash 6289583b36 System: Take input parameter for operator|= and &= by value
These are just trivial enum values, so they can be passed by value to
avoid unnecessary dereferencing.
2019-08-17 20:40:47 -04:00
Lioncash ff0b3eb2b1 System: Make operator|= and operator&= for enums constexpr
It's valid to allow these to be used within a constexpr context. Makes
the enum functions more consistent.
2019-08-17 20:36:42 -04:00
Lioncash 0e08493596 CMakeLists: Migrate off variables where applicable
Avoids the use of individual variables and instead appends directly to
the target where necessary.
2019-08-17 19:10:51 -04:00
Lioncash 37670dca2c BooObject: Make SObjToken interface noexcept where applicable
Now that decrement() doesn't lock a mutex every time its executed, we
can mark it as noexcept. This allows us to make most of the interface
noexcept. In particular, the move constructor and move assignment
operator can now be noexcept. This allows all Boo objects to play nicely
with interfaces that may make use of std::move_if_noexcept, like some of
the standard library facilities, without always taking the copy
constructor/copy assignment.
2019-08-17 14:12:47 -04:00
Lioncash 84f62a0f2c BooObject: Remove destructorLock()
Now that we have the fencing and atomic operations in place to ensure
access to data on other threads will always occur before the use of
delete, we can remove the destructor lock. This will be useful for
making ObjToken's move assignment operator noexcept.
2019-08-17 14:12:23 -04:00
Lioncash 4d91a1b3c3 BooObject: Make atomic ordering constraints less strict
Increasing a reference count is able to always be relaxed. New
references to an object can only be formed from an existing reference.
The passing of an existing reference from one thread to another will
already necessitate the use of synchronization primitives, so this is a
safe change to make. Regardless, nothing other than the object itself
directly relies on the reference count, so this will always be a
suitably atomic operation, even in the face of no synchronization
primitives.

In the case of decrementing the reference count, it's sufficient to
treat it with release semantics and follow it up with an atomic thread
fence. This ensures that all accesses to the object in one thread will
occur before the delete occurs in another thread (if the situation ever
occurs).

This should make for a slightly more efficient increment and decrement.
2019-08-17 13:08:10 -04:00
Phillip Stephens c33604b8cb
Merge pull request #19 from lioncash/move
DeviceToken: Amend move constructor
2019-08-16 18:34:22 -07:00
Lioncash 88355ada5f General: Convert typedefs into using aliases 2019-08-16 18:27:23 -07:00
Lioncash 78ce16aa9f General: Make use of nullptr where applicable 2019-08-16 18:27:23 -07:00
Lioncash 386ec8e6cc General: Add missing override specifiers
Adds override specifiers that I missed for other platforms when
initially applying them to the codebase.
2019-08-16 18:27:23 -07:00
Lioncash 80c1103b44 General: Make member functions const where applicable
These functions don't modify instance state, so they can be marked
const.
2019-08-16 18:27:23 -07:00
Phillip Stephens 1822b555fa Fix missed override declarations 2019-08-16 18:27:23 -07:00
Lioncash 3c9866d697 DeviceToken: Amend move constructor
The default move constructor isn't const qualified. The copy assignment
operator wasn't deleted either which is somewhat dangerous. We can also
opt for simply defaulting the move constructor and assignment operators
instead of defining the move constructor like a copy constructor.
2019-08-16 04:49:48 -04:00
Phillip Stephens 0121d355c4 Fix missed override declarations 2019-08-13 14:39:45 -07:00
Phillip Stephens 5cff0c19bd
Merge pull request #17 from lioncash/override
General: Make use of override where applicable
2019-08-13 14:29:47 -07:00
Lioncash d4cd2b4dce General: Make use of override where applicable
Continues the override modernizations, but now targeting boo.
2019-08-12 22:44:45 -04:00
Jack Andersen af50bc0bc2 Windows build fixes 2019-07-27 15:19:25 -10:00
Jack Andersen ae5d7e5131 Add support for debug groups in OpenGL and Vulkan 2019-07-20 22:41:07 -10:00
Jack Andersen deefc8e995 Massive fmtlib refactor 2019-07-19 18:22:36 -10:00
Jack Andersen b2bf7549f5 Use Vulkan API version 1.1 2019-07-06 22:20:41 -10:00
Phillip Stephens 56439646b2 Proper macOS fixes >.< 2019-06-30 21:02:19 -07:00
Phillip Stephens 8523fcbb78 Actually fix Metal compiling 2019-06-30 20:40:03 -07:00
Phillip Stephens 35732d33f5 Fix macOS and Windows builds 2019-06-30 20:13:12 -07:00
Jack Andersen c5f8a11850 Merge branch 'master' of ssh://git.axiodl.com:6431/AxioDL/boo 2019-06-20 20:01:43 -10:00
Jack Andersen 8a181b96ce Add areShadersReady poll function 2019-06-20 20:01:27 -10:00
Phillip Stephens 6d3e97e959 Merge commit '87138bb' 2019-06-20 15:43:45 -07:00
Phillip Stephens 87138bbe0e Compile fixes 2019-06-20 15:43:27 -07:00
Jack Andersen e0674ff957 Made two variables atomic to be safe 2019-06-15 21:12:50 -10:00
Jack Andersen 7eda81e55e Initial support for asyncronous shader pipeline compilation 2019-06-15 20:24:28 -10:00
Jack Andersen 29a67b9ea8 Inhibit screensaver using dbus or xdg-screensaver 2019-06-11 15:55:58 -10:00
Jack Andersen 99519d3882 Cubemap support for metal 2019-06-02 21:51:03 -10:00
Jack Andersen 18bb6e7439 Cubemap support for D3D11 2019-05-31 23:27:11 -10:00
Jack Andersen 18faf55750 Add support for cubemap textures in GL and Vulkan 2019-05-31 17:39:55 -10:00
Jack Andersen 22cb5bb0a8 Compile warning fix 2019-05-10 13:07:33 -10:00
Jack Andersen e7a4648968 Update logvisor 2019-05-09 18:09:54 -10:00
Jack Andersen b340a8a42e Raise max texture count to 12 2019-05-09 18:07:13 -10:00
Jack Andersen 3ad748f28b Increase max texture count to 12 2019-05-07 17:46:31 -10:00
Jack Andersen 0f330c1f05 Add support for MemorySanitizer instrumentation 2019-04-06 18:53:41 -10:00
Jack Andersen c1d3d040bf Add True and False tests for bitwise enums 2019-04-02 18:28:39 -10:00
Jack Andersen af4b1a4521 Register PID with X11 window 2019-03-09 23:13:45 -10:00
Jack Andersen 21f9fcf914 Ensure GL doesn't leak VAOs 2019-03-04 22:33:30 -10:00
Jack Andersen 8b0927ead0 Fix D3D DXT3 loading 2019-03-03 13:03:01 -10:00
Jack Andersen af50240143 Add DXT3 texture format 2019-03-02 20:16:12 -10:00
Jack Andersen 66cf60ea55 No overwrite alpha by default 2019-02-26 18:35:21 -10:00
Jack Andersen f8b22ecb13 Correct nanosleep usage 2019-02-23 21:14:27 -10:00
Jack Andersen e75735d246 Update logvisor 2019-02-17 19:46:19 -10:00
Jack Andersen 1c21519d5d Implicit switch fallthrough refactor 2019-02-17 19:44:20 -10:00
Jack Andersen 45db327fb3 Remove vsync thread from X11 backend 2019-02-11 21:18:35 -10:00