* Initial commit
* Update macros
* Add GPU Markers
* Fix builds without microprofile
* minor updates
* clang format
* Update profiler.cpp
* clang format
* Name Main Thread
* Update profiler_macros.h
* Fix end flip
* Update fiddle_context_gl.cpp
* clang format
* Update rive_build_config.lua
* Update rive_build_config.lua
* forked microprofile so I can use a tag
* Update render_context_d3d_impl.cpp
* clang
Co-authored-by: John White <aliasbinman@gmail.com>
* proper states based one warnings. Support for gpunamefilter
* fix for raster order mode
* now works on AMD
* factored out wstring conversion
* clang format
* no need for pop back if using len -1
* removed uneeded forward declare
Co-authored-by: Jonathon Copeland <jcopela4@gmail.com>
This adds AsyncPipelineStateManager to the render code, which handles the background processing of draw shader creation (not, at the moment, other shader types...there's no reason those couldn't be added as well, but this seemed the biggest target).
If a given shader has not been compiled yet, we will fall back on an ubershader version with all features enabled
the ubershader version will be compiled synchronously if it does not exist yet
For the D3Ds, this is done with a background thread that compiles the shaders.
GL, however, does not seem to play nice with background threading shader creation. But what it does have is the KHR_parallel_shader_compile extension, which basically lets the driver create threads in the background and thread the shader compilation.
The shader manager, in this case, needs to poll the completion state every time the shader is requested and potentially push the compilation along to the next stage (i.e. once linkProgram has completed, then we can do the rest of our setup)
If KHR_parallel_shader_compile is not supported (for instance, with WebGL on Firefox) then shader compilation will just happen synchronously (I could not find a clear way to thread the GL shader creation, but I would happily add it as a fallback if there is a way)
This change also updates our GLAD loader to version 2.0.8 (from 0.1.36!), which had some API changes.
Co-authored-by: JoshJRive <joshua@rive.app>
* Add profiling macros and optick profiler
* Update premake5_optick.lua
* Added more profiling markers
* Remove microprofiler option for now as not implemented
* Added more markers ro rendering code
* Update Optick build premake only for windows builds
* More build file changes for optick with windows
* Change how optick is built on windows
* Update premake5_v2.lua
* Update build files to use with_optick option
* Added ScopeName macro to appease ASAN
* Push to rekick jobs
* Delete ProfilerMacros.h
* Create profiler_macros.h
* Update path_fiddle.cpp
* Update fiddle_context.hpp
* Update for rename of header
* More header changes
* Update fiddle_context.hpp
* Update profiler_macros.h
* Update for clang format
* Update fiddle_context.hpp
* Update profiler_macros.h
* Update profiler_macros.h
* Changed premake values on Chris' comments
* Removed multiple define fro RIVE_OPTICK and now in rive_build_config.lua
* Added Optick URL and Version to rive_build_config
Co-authored-by: John White <aliasbinman@gmail.com>
Rename texture_target_gl* gms to offscreen_render_target*.
Implement offscreen render targets for Vulkan testing.
Add permutations for a "riveRenderable" flag, which disables input
attachment support on vulkan, and will disable UAV support on D3D.
Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
* path_fiddle d3d12 and start of d3d12 imple
* converted to precompiled hlsl for tess, grad and atlas. Fixed sampler issue in d3d11
* started implementing resource managment
* working state with grad,tess and atlas draws coded. GPUResource mangement also in
* draws in with another set of validation fixes
* atomic mode working
* textures now upload correctly, atomics now have barriers and index/vertex buffers are properly bound
* typo fix
* made work with gms, uniforms updated correctly now, coelesed and resolve now works
* passing golds?
* proper que dependencies
* added some comments around passing command lists for d3d12, if no copy is given, use direct for both
* rename
* added golden pr
* refactor pulling out all shader compiling to a shared D3DPipelineManager class
* pre comments
* fixed workflow syntax error
Co-authored-by: Jonathon Copeland <jcopela4@gmail.com>
This gives better support for smaller screens and side-by-side windows.
Also standardize the formatting check on GitHub on version 17.
Diffs=
e52e9fff29 Drop the ColumnLimit to 80 for clang-format (#8320)
Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>