Skip to content

Atomic for BsModule#65

Closed
jonesmz wants to merge 2757 commits into
GameFoundry:masterfrom
jonesmz:atomic_for_bs_module
Closed

Atomic for BsModule#65
jonesmz wants to merge 2757 commits into
GameFoundry:masterfrom
jonesmz:atomic_for_bs_module

Conversation

@jonesmz
Copy link
Copy Markdown
Contributor

@jonesmz jonesmz commented Mar 31, 2018

No description provided.

@BearishSun
Copy link
Copy Markdown
Member

Earlier on I decided against atomicity for Module. Primarily because it is something you end up paying for on every single call to Module::instance(), and it only really matters during startUp/shutDown calls, which happen once at very specific points.

The memory barriers will prevent the compiler from optimally organizing the code around the relevant call, and can potentially issue a memory barrier instruction (will happen on ARM I believe, but on x86 just guaranteeing the order is enough). Perhaps if the atomicity could be achieved using relaxed memory ordering it would be acceptable but I'm not sure I'd like it even then though.

If we were to go a thread safe route I'd prefer we use a separate version of Module that is thread-safe (perhaps via a policy controlled by a template parameter).

@jonesmz
Copy link
Copy Markdown
Contributor Author

jonesmz commented Mar 31, 2018

Ok, that sounds good.

I'll add a set of bs::StoragePolicy classes that can be given as a template parameter.

Normal, which would just be the normal type being stored.
Thread local, which would be for thread local storage
Atomic, which would wrap the type in std::atomic.

@jonesmz jonesmz force-pushed the atomic_for_bs_module branch from 16c9356 to c6cdcbd Compare March 31, 2018 23:50
@jonesmz jonesmz force-pushed the atomic_for_bs_module branch 4 times, most recently from 5ee20b2 to b199601 Compare April 10, 2018 18:53
@jonesmz jonesmz force-pushed the atomic_for_bs_module branch 2 times, most recently from 102ce6d to e501e7b Compare May 13, 2018 06:56
@jonesmz jonesmz force-pushed the atomic_for_bs_module branch 2 times, most recently from 236daeb to aeb6297 Compare May 16, 2018 20:00
@jonesmz
Copy link
Copy Markdown
Contributor Author

jonesmz commented Jul 9, 2018

Sorry for the long delay on this issue. Busy with other stuff shrug. Still planning to provide a patch as described.

@jonesmz jonesmz force-pushed the atomic_for_bs_module branch from aeb6297 to eb38f14 Compare July 11, 2018 04:55
BearishSun and others added 17 commits May 25, 2019 11:32
…bject mapping, as it doesn't exist and causes a crash
This is pretty basic. This also most likely breaks input on external
windows as I left a bunch of the X related setup out because I don't
want bsf to do anything extra to my window. I use SDL2 for input. A
proper solution to this is probably having one more option for
specifying if bsf should run the window event loop or not, Windows
version probably also needs this option, but I haven't tested my code
on Windows yet.
 - Fixed all shaders failing to cross compile to MSL
 - Added SPIR-V Cross and MoltenVK library dependencies
 - Added shader object remapping from descriptor set/slot to Metal indices
 - Perform vertex Y flip in shader to be consistent with Vulkan
 - Disable validation layers on macOS, as they complain about Metal Shading Language
 - Enable MoltenVK debug mode so XCode GPU debugging works
 - Shader object remapping will now sort the objects based on set/slot, in order so they resulting indices match what MoltenVK expects
 - More fixes regarding set/slot rebinding
 - Explicitly set threadgroup size for MSL compute shaders
 - Such variations can be exposed to the editor and then toggled by the user directly from the GUI
…es can now be queried through Shader

 - Also added a 'show' BSL attribute that notifies the system a shader variation parameter should be exposed to the user (rather than controlled by the renderer)
BearishSun and others added 24 commits September 23, 2019 19:10
…with renderables when an on-demand camera was not drawing
The DCO is a legal protection for some licenses (such as MIT) which do not expressly verify contributors' consent.

MIT also does not have a patents clause, which the DCO helps address.

This is not retroactive, but could help protect future contributions.
 - Laying the groundwork for binary serializer refactor that supports compression
 - Added support for RTTI schema
 - Cleaned up RTTIField interface a bit
 - RTTIPlainType::getDynamicSize -> getSize
 - Buffered bitstream now supports align() and var int
 - Included a header for RTTI schema I missed previously
 - Refactored binary serializer so it can read meta-data from a schema
 - RTTI plain type sizes are now represented through BitLength class
 - RTTI plain type header can now be compressed
 - rtti_* methods now return BitLength
 - BinarySerializer can now handle compressed reflectable and reflectable pointer type sizes
 - Extended RTTIPlainType::getSize with RTTIFieldInfo parameter
 - Fixed all compile errors
 - Added support for builtin plain types to BinarySerializer
…modate multi-frame effects such as auto-exposure or temporal AA
 - Also GUI draw group bounds are now properly calculated, not wasting space
…when they finished executing on the GPU

 - Also updated the GPU profiler so individual views can be profiled independently (profiling entire frames was causing issues with queries across multiple command buffers)
…internally, so the command execution can be tracked
…how long to keep redrawing an on-demand view for
@jonesmz jonesmz force-pushed the atomic_for_bs_module branch 2 times, most recently from 198a307 to dc167f9 Compare October 6, 2019 19:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants