* 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>
Add a new InterlockMode that overwrites all fill rules as clockwise and
implements the clockwise path rendering algorithm using raster ordered
PLS. The only backend to support this so far is GL with shader images,
but more will come.
Notably, when there is no advanced blend, we can set
"fixedFunctionColorOutput" and render directly to the target
framebuffer.
Performance so far looks promising, especially on Intel, but more
in-depth perf optimizations arebyet to come.
This is implemented as its own InterlockMode only to give it soak time.
Once this rendering mode is stable, we can merge it back into
"rasterOrdering" and just select draw shaders based on fill rule.
Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
Set up http and websocket servers in deploy_tests.py that allow us to
communicate with the remote wasm app similarly to how we communicate
with android & ios devices. Add a "-w" target to check_golds.sh that
kicks tests off in the default browser.
Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.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>
Rather than having an explosion of enums for all the different backend
configs, us very basic backend enums (gl, vulkan, metal, etc.), and
capture all the permutations in the separate BackendParams struct.
Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.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>
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>
Only enable the GL_EXT_clip_cull_distance on GL ES.
Also tweak the gms more, sorting the slow tests first for better times.
Diffs=
04f481d40 Fix glmsaa on Desktop GL drivers (#8026)
Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
* Add support for selecting the GLFW monitor in fullscreen mode.
* Add zoom support to player.
* Fix a deprecated android call in player.
* Don't separate goldens and gms into different directories -- it's faster to just diff them all together, and unnecessary to launch two different browser windows when there are failures.
* Call build_rive.sh directly from deploy_tools.py if msbuild.exe is on the path -- there is a startup lag when using build_rive.bat.
* Tune check_golds.sh for machines with higher numbers of cores.
Diffs=
2bd842b54 Tooling tweaks (#8015)
Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
"player" is a tool that draws multiple copies of a .riv fullscreen and reports the FPS. It's (sort of) a simplification and rewrite of path_fiddle. "player" takes advantage of the built-in TestingWindow and TestHarness server so it can be easily deployed remotely. Currently, only android is supported as a remote target.
This PR also overhauls and simplifies the android_tools app to use NativeActivities, and deletes almost all the kotlin code.
https://github.com/user-attachments/assets/ff31cc6b-c7fb-42f0-8159-f7b1d9aad9b6
Diffs=
b172dca87 Add a "player" app to the tools (#8004)
Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>