429 Commits

Author SHA1 Message Date
csmartdalton
832c963260 Improve batching for interior triangulation draws
Interior triangulation draws take 2 passes: outer cubics followed by the interior triangles.

Improve batching and reduce the number of barriers by allowing other non-overlapping draws to be sorted in between the two passes.

We implement this by adding RiveRenderPathDraw::subpassCount(), and then sorting a unique indirectDraw for each subpass into the list.

Diffs=
0f805654cf Improve batching for interior triangulation draws (#8327)

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2024-10-12 05:14:10 +00:00
blakdragan7
0de1f5c892 Unreal Runtime into Mono
moved unreal runtime into mono and updated python scripts to work with mono paths and build and copy gms

Diffs=
4e8c555722 Unreal Runtime into Mono  (#8318)

Co-authored-by: Jonathon Copeland <jcopela4@gmail.com>
2024-10-12 01:19:47 +00:00
csmartdalton
163f1beef3 Drop the ColumnLimit to 80 for clang-format
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>
2024-10-11 19:22:48 +00:00
csmartdalton
ee9325b0bd Optimize atomic rendering for input attachments
Pack clip data into an RGBA8 attachment and turn on src-over blending for both color and clip.

Handle advanced blend modes by rearranging the math such that the correct color isn't reached until *AFTER* the hardware blend state is applied.

This allows us to preserve clip and color contents by just emitting a=0 instead of loading the current value. It also saves flops by offloading the blending work onto the ROP blending unit, and serves as a hint to the hardware that it doesn't need to read or write anything when a == 0.

Diffs=
1b5e50fce Optimize atomic rendering for input attachments (#8310)

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2024-10-11 17:01:50 +00:00
blakdragan7
fc31e5e757 Prep for rhi
Many changes to add in support for Unreal RHI
This is the first step. Afterwords we need more changes such as finalizing the for_unreal switch to premake.

Diffs=
1cc5f2b6f Prep for rhi (#8270)

Co-authored-by: Jonathon Copeland <jcopela4@gmail.com>
2024-10-10 00:00:05 +00:00
csmartdalton
12d54ef3e7 Calculate LOD ahead of time for image paints
Since we don't do perspective transformations, the mipmap
level-of-detail for image paints is constant throughout the entire
shape. We can therefore save time by calculating the LOD ahead instead
of relying on shader derivatives in the fragment shader. This also saves
us from having to compute these derivatives explicitly outside of
control flow, which further improves performance.

To make room for LOD in the paintAuxBuffer, we also drop support for GL
bindless textures, which do not work similarly to descriptor indexing in
Vulkan, which we will use in the future if we decide this is a feature
we need.

Diffs=
7bef90845 Calculate LOD ahead of time for image paints (#8260)

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2024-10-04 16:37:15 +00:00
csmartdalton
c2d32392f6 Rename InterlockMode::depthStencil to InterlockMode::msaa
We call it "msaa" internally, so lets update it to reflect that.

Diffs=
bcd3c9218 Rename InterlockMode::depthStencil to InterlockMode::msaa (#8265)

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2024-10-03 21:29:20 +00:00
luigi-rosso
6eaf614290 runtime dashing!
it's here :)

Diffs=
1713983ab runtime dashing! (#8191)

Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
2024-09-21 01:08:15 +00:00
csmartdalton
b9a69586b6 Update player to run without the python server
Diffs=
9e4b81762 Update player to run without the python server (#8175)

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2024-09-20 00:27:15 +00:00
csmartdalton
88dce8c523 Overhaul Vulkan synchronization
This stabilizes Vulkan on Android.

Also adds a "vkcore" backend, which tests vulkan without bonus features enabled.

Diffs=
adc240554 Overhaul Vulkan synchronization (#8166)

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2024-09-18 18:04:50 +00:00
csmartdalton
0f206ef119 Remove Skia from ios_tests and quit building it on many runners
Diffs=
9dd20080c Remove Skia from ios_tests and quit building it on many runners (#8144)

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2024-09-17 23:48:08 +00:00
luigi-rosso
9c958d66c8 Colinear and bounds ffi
Final fix for https://github.com/rive-app/rive/issues/7946!!

~~Letting tests run while I add WASM side.~~

This adds colinear checks and precise bounds to dart native so we can completely remove the flutter ui.Path usage in rive_core. This dries up a lot of the rendering code where we still kept the old path around and should provide some performance benefits particularly on web.

Haha @alxgibsn we both caught the StageShape issue :)

Diffs=
7e8100fee Colinear and bounds ffi (#8158)

Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
2024-09-17 20:06:57 +00:00
rivessamr
ed33f091b5 Initial refactor to simplfigy class structure
Diffs=
edc91a599 Initial refactor to simplfigy class structure (#8122)

Co-authored-by: rivessamr <suki@rive.app>
2024-09-13 16:41:06 +00:00
csmartdalton
4f8bc5a042 Fix dstreadshuffle gm
Diffs=
24bb958f1 Fix dstreadshuffle gm (#8100)

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2024-09-07 23:02:50 +00:00
blakdragan7
699b1fdd98 Next set skia strip
Diffs=
5cd451423 Next set skia strip (#8092)

Co-authored-by: Jonathon Copeland <jcopela4@gmail.com>
2024-09-07 21:11:11 +00:00
blakdragan7
6142570338 skia removal
overstroke.cpp
strokefill.cpp
still needs the contour work for overstroke.cpp

Diffs=
5eadf5c17 skia removal (#8088)

Co-authored-by: blakdragan7 <jcopela4@gmail.com>
Co-authored-by: hernan <hernan@rive.app>
2024-09-07 17:09:16 +00:00
blakdragan7
e3b39c0020 Port to remove skia
Diffs=
fcbc28bbc Port to remove skia (#8086)

Co-authored-by: blakdragan7 <jcopela4@gmail.com>
Co-authored-by: rivessamr <suki@rive.app>
2024-09-07 01:04:44 +00:00
blakdragan7
54c36a0a34 SkChop party! mandoline and cubicpaths
Diffs=
2f7836f9c SkChop party! mandoline and cubicpaths (#8085)

Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
Co-authored-by: blakdragan7 <jcopela4@gmail.com>
2024-09-06 23:53:08 +00:00
bodymovin
e836b6b072 pass wrap separately to support alignments
we need to pass the text wrap value separately in order to support right and center alignment.
Previously, since we were treating "no wrap" as an autosized text, the content wouldn't align to the text box and instead only align to itself.
This PR splits both as separate arguments and adds the new argument to the bindings.

Diffs=
451599d03 pass wrap separately to support alignments (#8058)
e32e2fde0 Start converting trickycubicstrokes to Rive (#8089)

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
Co-authored-by: blakdragan7 <jcopela4@gmail.com>
Co-authored-by: hernan <hernan@rive.app>
2024-09-06 23:38:27 +00:00
blakdragan7
b3d7031f36 removed skia from a few gms
the start of skia removal from GMs

Diffs=
63a88a1ce removed skia from a few gms (#8076)

Co-authored-by: Jonathon Copeland <jcopela4@gmail.com>
2024-09-06 23:20:09 +00:00
blakdragan7
37d2131183 Remove skia from labyrinth gm
My basic contribution to the Skia removal party

Diffs=
177921a51 Remove skia from labyrinth gm (#8084)

Co-authored-by: David Skuza <david@rive.app>
2024-09-06 22:22:25 +00:00
blakdragan7
81983d2830 Remove skia dependencies from strokedlines
Diffs=
716d78164 Remove skia dependencies from strokedlines (#8087)

Co-authored-by: Philip Chung <philterdesign@gmail.com>
2024-09-06 22:08:51 +00:00
rivessamr
d674f970da Add android unit tests and remove running tests in platform testing
Diffs=
507af3256 Add android unit tests and remove running tests in platform testing (#8067)

Co-authored-by: rivessamr <suki@rive.app>
2024-09-06 21:12:06 +00:00
csmartdalton
c6f5ae2bde Dance around a driver issue that generates garbage pixels
We're getting reports of garbage pixels on the (PowerVR) Apple A10x. Restating the shader clipping logic in a different way appears to make these go away. This is probably a driver issue, since "coverage" should never be NaN and both versions ought be be equivalent.

Fixes #7423

Diffs=
b2894c99d Dance around a driver issue that generates garbage pixels (#8077)

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2024-09-06 04:26:55 +00:00
csmartdalton
41efaaf853 Implement keystrokes for the player test
It's easier to experiment and debug when you can interact with it. Pump sys.stdin over the TCP server to the target.

Also delete the separate "RIV server" in favor of a "FETCH_RIV_FILE" request on the main TestHarness server.

Diffs=
0dcbf4d1f Implement keystrokes for the player test (#8065)

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2024-09-05 22:29:34 +00:00
rivessamr
5558b7c6f6 rename ios and android tools to tests
Also

renamed deploy_tools to deploy_tests
renamed pr_runtime_tests.yaml to pr_unit_tests.yaml
renamed pr_tools_tests.yaml to pr_platform_tests.yaml

Diffs=
ac3b3c257 rename ios and android tools to tests (#8047)

Co-authored-by: rivessamr <suki@rive.app>
2024-09-05 18:26:07 +00:00
csmartdalton
bc8ed46e56 Add a mechanism to skip flaky golden tests
deploy_tools.py parses the "RIVE_SKIPPED_GOLDEN_TESTS" environment variable to skip flaky tests.

Diffs=
e614bda68 Add a mechanism to skip flaky golden tests (#8062)

Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
2024-09-05 05:02:27 +00:00
csmartdalton
f0f097b148 Fix glmsaa on Desktop GL drivers
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>
2024-09-05 03:53:49 +00:00
rivessamr
5207dd8ba2 Opensource (tools) tests as part of runtime
- Most of tools/* have been moved to the new packages/runtime/tests. (Excludes fuzz and a few things with proprietary information)

- The tools/test are now in packages/runtime/unit_tests/renderer.

- The runtime/tests are now also moved, to the following packages/runtime/unit_tests/runtime (moved the "dev/tests" to packages/runtime/unit_tests)

- Thus unit_tests comprises of runtime and renderer tests (in the future we can add more categories as folder, this avoids too many tests in one folder)

- The rendering tests and runtime tests are built together in one executable called unit_tests*. This is what is described in the rive-runtime README - it is the way our developers can test the rendering (GPU) and runtime (CPU) unit tests in one go.

- pr_runtime_tests now builds and runs all the unit_tests, previously it was only executing the runtime tests, but now it includes the renderer tests for the (same platforms still tested: windows, windows msvc, mac, linux)

- The pr_tools_tests still tests the same workloads on the same devices, limited still to the rendering tests

ISSUES:

- We cannot build all the "tools" tests (e.g. imagediff, rendering tests) with the runtime tests. The runtime tests enables TESTING. I'm also not sure if running the runtime tests on all the devices is actually is worth it - if the tests are platform+device agnostic then probably not worth it.

- Windows pr_runtime_tests switched to ws-actions/configure-aws-credentials@v1 from microsoft/setup-msbuild@v1.1, as would not build otherwise, seems related to old version of premake

TODO:

- Verify of the performance is reasonable for runner / checkins

Diffs=
f25ee97a0 Opensource (tools) tests as part of runtime (#8035)

Co-authored-by: rivessamr <suki@rive.app>
2024-09-03 22:45:48 +00:00