Commit Graph

349 Commits

Author SHA1 Message Date
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 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
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
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 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
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 87138bbe0e Compile fixes 2019-06-20 15:43:27 -07:00
Jack Andersen 7eda81e55e Initial support for asyncronous shader pipeline compilation 2019-06-15 20:24:28 -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 3ad748f28b Increase max texture count to 12 2019-05-07 17:46:31 -10:00
Jack Andersen c1d3d040bf Add True and False tests for bitwise enums 2019-04-02 18:28:39 -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 45db327fb3 Remove vsync thread from X11 backend 2019-02-11 21:18:35 -10:00
Jack Andersen 9658d1372d Additional methods for SScrollDelta 2019-01-21 18:23:22 -10:00
Jack Andersen 8333536a7c VertexFormatInfo constructor tweak 2019-01-02 17:46:48 -10:00
Jack Andersen 3a8defb5eb Minor bitwise enum macro change 2018-12-15 20:30:13 -10:00
Jack Andersen 058ea23a00 New code style refactor 2018-12-07 19:17:51 -10:00
Jack Andersen 54676aff91 early return case for setClampMode 2018-11-07 14:52:25 -10:00
Jack Andersen b6d40fde97 Add startInst argument to drawInstanced 2018-11-04 21:24:38 -10:00
Jack Andersen 9adf481c8e Remove FLIPFROMGL macro from GLSL header 2018-10-15 21:26:02 -10:00
Jack Andersen 65c99ad769 macOS API sync 2018-10-15 17:13:57 -10:00
Jack Andersen 592ffa1372 Windows sync for API changes 2018-10-14 09:59:19 -10:00
Jack Andersen 0b52f3dbab Convert to pragma once 2018-10-06 17:36:44 -10:00
Jack Andersen c29d837ab5 Huge shader infrastructure refactor 2018-10-06 16:49:22 -10:00
Jack Andersen 08d632a8bd Multichannel WAVOut 2018-09-03 14:14:59 -10:00
Jack Andersen 8ee04c8f1a Sync macOS with API changes 2018-08-27 17:46:33 -10:00
Jack Andersen 168fb3f516 ALSA MIDI fixes 2018-08-18 14:28:00 -10:00
Jack Andersen 5e58e989a8 Remove ALSA audio backend 2018-08-18 12:08:58 -10:00
Jack Andersen fe7f671c0b Add Qt Application type 2018-07-16 12:39:40 -10:00
Jack Andersen abbd3167b2 Implement Metal tessellation shaders 2018-06-11 15:13:34 -10:00
Jack Andersen 2a45cf90d8 Implement tessellation shaders for D3D11 2018-06-07 14:42:43 -10:00
Jack Andersen 4a19ac1e83 OpenGL and Vulkan support for tessellation shaders 2018-06-06 18:36:17 -10:00
Jack Andersen 3028e34b51 Silent audio mixing fix; Xlib Vulkan destruction order fix 2018-05-28 09:28:36 -10:00
Jack Andersen d5ec7bcc1e Slab allocation of VkDescriptorPools 2018-05-27 11:35:21 -10:00
Jack Andersen 19014e0ba7 synchronize macOS with latest changes 2018-05-26 11:29:19 -10:00
Jack Andersen 84df8af28c Windows build fixes and cleanups 2018-05-24 20:30:42 -10:00
Jack Andersen 721d10919b Huge Vulkan refactor 2018-05-21 21:48:13 -10:00
Jack Andersen eaff1ba744 Vulkan backend fixes 2018-05-20 12:37:26 -10:00
Jack Andersen 578432eb2f OpenGL and Vulkan resource tracing 2018-05-19 20:11:49 -10:00
Jack Andersen edf2c1e34d Add PulseAudio backend. Various Xlib fixes 2018-05-06 12:44:31 -10:00
Jack Andersen edd26fc65b Add shader mode for constant alpha overwrite 2018-02-04 20:52:54 -10:00
Jack Andersen 25dfeb64aa Fix swapped L/R button bits 2018-02-02 14:33:49 -10:00
Jack Andersen 72c9809655 Add ClampToEdgeNearest texture mode 2018-02-01 13:12:42 -10:00
Jack Andersen 5b62fcd826 Metal API validation fixes 2018-01-24 20:55:42 -10:00
Jack Andersen 25dc238c44 Xlib deep color support 2018-01-21 21:33:47 -10:00
Jack Andersen 93c787dcd4 Gamma correction for Vulkan, D3D, OpenGL 2018-01-21 12:01:52 -10:00
Jack Andersen 2df85e8f8b More fixes 2018-01-19 19:50:01 -10:00
Jack Andersen 337c276ccb WTF 2018-01-19 17:02:29 -10:00
Jack Andersen 3d987b6dc9 Add deep color arg to ApplicationRun 2018-01-15 20:29:43 -10:00
Jack Andersen 4257fc0b10 MSAA and Anisotropic filtering variables 2018-01-09 20:15:18 -10:00
Jack Andersen 1dc69c3468 Work on MSAA support 2018-01-06 19:17:14 -10:00
Jack Andersen db82ba674b Add clearDepth parameter to resolveBindTexture() 2018-01-05 20:49:54 -10:00
Jack Andersen 142c0c7dcd Use locally available glew.h 2017-12-30 18:56:25 -08:00
Jack Andersen 2ada7130d3 Make WIN32 vulkan macro target-wide 2017-12-29 15:06:44 -10:00
Jack Andersen fa8989bed3 Huge compile performance refactor 2017-12-28 21:54:26 -10:00
Jack Andersen 02dc5a2a97 GameCube controller calibration fix 2017-12-19 20:04:11 -10:00
Phillip Stephens beb7f00b18 Merge commit '50ee248' 2017-12-15 18:10:28 -08:00
Phillip Stephens 50ee248391 Expose VID/PID APIs 2017-12-15 18:09:56 -08:00
Jack Andersen e0aa15610b macOS IOKit interface fixes; callback-change mutex for controllers 2017-12-15 13:35:54 -10:00
Jack Andersen 62c2b1ffac UWP fixes 2017-12-06 18:08:44 -10:00
Jack Andersen f228f23661 UWP support 2017-12-05 17:20:59 -10:00
Jack Andersen 489e7e671b Allocate submixes and voices using boo::ObjToken 2017-12-03 16:50:33 -10:00
Jack Andersen 03de8811b1 Object tracker list refactor; add object tracker to audio system 2017-12-02 20:05:16 -10:00
Jack Andersen b23da43f05 Windows and Vulkan fixes 2017-11-24 16:49:20 -10:00
Phillip Stephens 4aa662cd67 Add support for wired switch controllers from PowerA 2017-11-23 23:17:28 -08:00
Jack Andersen 49d76b84be Ensure boo IObj instances are heap-allocated 2017-11-19 13:44:46 -10:00
Jack Andersen a99bddc905 ClampToEdge mode for textures; cocoa termination exception fix 2017-11-16 22:55:51 -10:00
Jack Andersen 6950d96b46 Linux build fixes 2017-11-12 21:19:49 -10:00
Jack Andersen cb5d22eed6 string_view refactor 2017-11-12 20:13:32 -10:00
Jack Andersen 165314b817 Windows and Vulkan fixes for AMD GPU 2017-11-08 22:10:43 -10:00
Jack Andersen 1a2fc1d2a3 IObj destructor race condition fix 2017-11-07 21:33:10 -10:00
Jack Andersen 6c3a35f15d Finish object tracker for remaining platforms 2017-11-05 20:53:54 -10:00
Jack Andersen 3a7987bb21 Object tracker bug fixes; optional metal binary shader compilation 2017-11-04 20:12:49 -10:00
Jack Andersen 021143fd89 New object management architecture for OpenGL subsystem (more platforms to come) 2017-11-02 23:39:26 -10:00
Jack Andersen d1b980b529 Windows fixes; experimental UWP framework (not working) 2017-10-23 17:09:50 -10:00
Jack Andersen 2a49a8d447 Add texture clamp mode 2017-09-30 18:23:28 -10:00
Jack Andersen 0b35c584f6 Experimental support for LtRt surround matrixing 2017-09-27 17:11:40 -10:00
Jack Andersen 175893f055 HID parser for udev; Vulkan fixes 2017-09-15 15:55:41 -10:00
Jack Andersen 1f14cc09a1 HID Parser for Win32 2017-09-15 12:26:39 -10:00
Jack Andersen 0f2a838bfb Add Cross-platform HID parser 2017-09-15 07:20:52 -10:00
Jack Andersen dd6e53119a Add subtractive blending mode to backends 2017-09-04 16:59:41 -10:00
Jack Andersen 18cbfd2865 Add GEqual Z-test option for pipeline backends 2017-09-02 19:52:53 -10:00
Jack Andersen b97c82469a shared_ptr for IWindow; better Cocoa app lifecycle 2017-07-16 16:45:49 -10:00
Jack Andersen 6e1c71aefd Working Dualshock output reports on macOS; fix runaway loop 2017-05-11 09:12:44 -10:00
Jack Andersen ff89a9cccf Win32 input device refinements and XInput support 2017-05-08 09:09:10 -10:00
Jack Andersen aa272fe7b9 Smart pointer cleanup 2017-05-07 11:31:56 -10:00
Jack Andersen 62443b59e7 IOKit input refactor 2017-05-07 11:24:00 -10:00
Jack Andersen 5f903c09ee Windows sync 2017-03-17 13:31:51 -10:00
Jack Andersen 05c26a535b OpenGL and metal rendering interface upgrades 2017-03-13 21:02:53 -10:00
Jack Andersen ca20aea834 Add front-face culling support 2017-03-10 10:38:00 -10:00
Jack Andersen a547eb9dbb Runtime shader cache fixes 2017-03-05 12:59:58 -10:00