Commit Graph

302 Commits

Author SHA1 Message Date
Luke Street 49cfab476f Merge remote-tracking branch 'darkszero/feature/support-lazy-commit-resources'
# Conflicts:
#	lib/graphicsdev/Vulkan.cpp
2021-10-25 23:07:39 -04:00
Henrique Gemignani Passos Lima c6aed360e6 Add commitPendingTransaction 2021-07-01 18:30:50 +03:00
Henrique Gemignani Passos Lima c7c1162bd3 Add lazyCommitTransaction and implement for Vulkan 2021-06-30 13:54:18 +03:00
Luke Street 4265e9d801 Use UTF-8 exclusively internally; update logvisor 2021-06-28 18:57:39 -04:00
Luke Street 78028c6237 More EMouseCursor options 2021-05-25 09:23:50 -04:00
Luke Street d13fbda0c0 Add baseVertex to drawIndexed; add ESpecialKey::Tab 2021-05-24 17:24:02 -04:00
Luke Street 55deba0913 Remove targetFrameTime / Limiter 2021-05-24 01:04:14 -04:00
Luke Street fa89c9c138 Update logvisor 2021-04-06 17:56:51 -04:00
Luke Street bb6274e638 Remove incomplete NX support
Update submodules & tracking branches
2021-04-06 12:54:06 -04:00
Luke Street 818a20d9f6 Remove outdated nxstl includes 2020-12-16 07:46:35 -05:00
Luke Street 57cb96c1a7 Add targetFrameTime option for Vulkan backend 2020-09-15 19:29:44 -04:00
Jack Andersen c36895a109 Update fmtlib 2020-04-11 12:46:05 -10:00
Luke Street 217031ebb9 Add DXT5/BPTC (BC3/BC7) texture formats 2020-02-27 03:59:41 -05:00
Phillip Stephens e342ea5754
Merge pull request #41 from lioncash/unused
General: Make use of [[maybe_unused]]
2019-09-10 04:04:45 -07:00
Phillip Stephens b3e6582a63
Merge pull request #40 from lioncash/window
IWindow: Use std::array where applicable
2019-09-10 04:03:42 -07:00
Lioncash 23cdae9e97 General: Make use of [[maybe_unused]]
Replaces uses of (void)variable with the attribute introduced in C++17.
2019-09-09 21:53:54 -04:00
Lioncash 794a680797 IWindow: Use std::array where applicable
Allows for more flexible copying/manipulation within using code. While
we're at it, we can make the interface of SWindowRect and SScrollData
constexpr, given they only manipulate primitives.
2019-09-09 21:32:15 -04:00
Lioncash f2ab814ce1 System: Implement False() in terms of True()
This is just a negation, so we can do this to place the logic in one
spot.
2019-09-09 21:02:32 -04:00
Lioncash 660df8f7e6 System: Make enum functions noexcept
Allows them to be used within noexcept contexts
2019-09-09 21:00:43 -04:00
Phillip Stephens a46858acec
Merge pull request #38 from lioncash/cast
NintendoPowerA: Use std::memcpy within transferCycle()
2019-09-06 23:24:56 -07:00
Phillip Stephens 82f3dd2b58
Merge pull request #37 from lioncash/deprecated
ApplicationWin32/WindowWin32: Get/SetWindowLong -> Get/SetWindowLongPtr
2019-09-06 23:24:07 -07:00
Lioncash 7496109ff6 NintendoPowerA: Make constructor explicit
While we're at it we can also ensure that all class members have
deterministic initial state.
2019-09-06 07:24:17 -04:00
Lioncash bfd042f156 ApplicationWin32/WindowWin32: Get/SetWindowLong -> Get/SetWindowLongPtr
Get/SetWindowLong is superseded on 64-bit Windows platform with
Get/SetWindowLongPtr. These are trivial to migrate over and have been
available since Windows 2000 Professional, so there's no need to worry
about breaking meaningful platform support
2019-09-06 07:13:27 -04:00
Lioncash b5c0c9e599 DolphinSmashAdapter: Make use of [[maybe_unused]] 2019-09-06 06:41:03 -04:00
Lioncash 475037f0e5 DolphinSmashAdapter: Use std::array where applicable 2019-09-06 06:35:27 -04:00
Phillip Stephens 6fc01ba50b
Merge pull request #35 from lioncash/audio
IAudioVoice: Make ChannelMap's array a std::array
2019-08-24 20:46:23 -07:00
Phillip Stephens b9971502a5
Merge pull request #33 from lioncash/midi-dec
MIDIDecoder: Make readContinuedValue internal + other cleanups
2019-08-24 20:45:57 -07:00
Lioncash 606839dd17 IAudioVoice: Make ChannelMap's array a std::array
Same thing, but more strongly typed.
2019-08-24 23:16:57 -04:00
Lioncash 64fbb923ca MIDIDecoder: Make readContinuedValue an internal function
This doesn't rely on any member state, so it can be decoupled from the
interface entirely.
2019-08-24 22:39:13 -04:00
Lioncash 0eb9f2caeb MIDIEncoder: Make _sendMessage overload for the ContiguousContainer concept
We can utilize the std::data and std::size utility functions to support
passthrough-ing data for any container that satisfies the
ContiguousContainer concept, which would be either std::array,
std::string, or std::vector.

This way we can utilize std::array internally without exposing the
inclusion within the header.
2019-08-24 21:50:08 -04:00
Lioncash bda59575b7 IGraphicsDataFactory: std::move vertex and fragment tokens in newShaderPipeline
Forwards the passed in tokens to the implementing function without an
unnecessary atomic reference count increment and decrement.
2019-08-24 20:21:28 -04:00
Phillip Stephens b0c246abc7 Fix code standard violations 2019-08-20 06:57:10 -07:00
Phillip Stephens 241db19cfb Avoid using None in enums, fix compilation 2019-08-20 01:06:52 -07:00
Lioncash baff71cdc3 General: Tidy up includes
Alphabetizes includes and resolves quite a few instances of indirect
inclusions, making the requirements of several interfaces explicit. This
also trims out includes that aren't actually necessary (likely due to
changes in the API over time).
2019-08-19 21:02:56 -04:00
Phillip Stephens fd503b4a11 Don't use template parameter in equality op 2019-08-18 12:45:58 -07:00
Phillip Stephens daca17e866 Add equality operators to ObjectToken 2019-08-18 12:36:56 -07:00
Phillip Stephens 1e67f49b0b
Merge pull request #25 from lioncash/finder
DeviceFinder: Move includes into cpp file where applicable
2019-08-18 12:09:06 -07:00
Phillip Stephens b67eb2ba06
Merge pull request #24 from lioncash/ctor
IGraphicsDataFactory: Default initialize semantic for VertexElementDescriptor
2019-08-18 12:08:56 -07:00
Lioncash 9853a97dd2 DeviceFinder: Move includes into cpp file where applicable
Avoids over-exposing inclusions that don't need to be propagated across
headers.
2019-08-18 05:45:13 -04:00
Lioncash 3ea95d9483 IGraphicsDataFactory: Default initialize semantic for VertexElementDescriptor
Makes initialization deterministic for the default constructor.
2019-08-18 03:53:41 -04:00
Lioncash d973b12dcd BooObject: Make ObjToken operator bool explicit
Makes explicit conversions to bool necessary to prevent error-prone
conversions to bool.
2019-08-18 03:19:53 -04:00
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
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 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