Skip to content

Commit 786587c

Browse files
HayesGordonHayesGordon
andcommitted
ci(rive_native): expand runtime platform tests (#10979) 6b8c2178ff
* ci(rive_native): expand runtime platform tests * ci: setup flutter * ci: git lfs and pub get * ci: flutter linux setup * ci: sidestep windows * ci: add rive native web integration test * ci: skip full test suite on linux * chore: force build * ci: temp disable web integration test * ci: only test web integration for now * ci: debugging! * ci: install xvfb * ci: attempt fix * ci: install npm deps * ci: reduce linux deps for fast runs * ci: renable all jobs * ci: linux reduce deps install * ci: add uuid and retry windows * ci: ignore windows and linux unit tests for now * ci: re-enable all tests * ci: remove python venv * ci(flutter): add higher level flutter package test for rive_native chore: rev to luau 0.699 (#11019) 1bb021d018 Fix Vulkan bootstrapping API version reporting (#11001) f5191dd154 The version that was being passed to the rive vulkan context was the version from querying the instance, which can differ from the API version that the actual device supports. This now correctly passes the device's vulkan version, which eliminates the need for a weird workaround in the VMA initialization (where we thought we had a Vulkan 1.3 device but in fact it was only Vulkan 1.0). Additionally mark the VKDBGUTILWARN003 message that happens on the S23s as non-aborting. It appears to be an incorrect warning - "Renderpass is not qualified for multipass due to a given subpass", for a renderpass that is not set up as multipass. Update our signal handler to break into the Windows debugger if it's attached (#11015) d9b3ed9801 Update our signal handler to break into the debugger if it's attached on Windows fix(wasm): Remove ASAN from the default WASM debug build (#10995) 0743b80014 This was causing our wasm debug binaries to become so large that some browsers couldn't handle them anymore. If we need ASAN, we have a proper "--with-asan" option for that now. feat: Implement clockwise mode on GL_EXT_shader_pixel_local_storage2 (#10987) 5f018f395b Clockwise mode finally gives us a really good use case for EXT_shader_pixel_local_storage2. On scenes that don't use advanced blend, this is showing speedups around 1.35x. This PR also does some cleanup around consolidating the logic for ShaderMiscFlags::fixedFunctionColorOutput, so we don't have to re-implement the same logic in every backend. chore: improve collapsed data bind processing performance (#10962) ed5a446ff2 fix(runtime): Revert state machine checks for needsAdvance (#10985) 3b82e09da9 Reverted an update where nested artboards were checking their nested state machine instances for needsAdvance and advancing if true. This appeared to fix (#10842) an issue that required a double advance when running goldens, however, there is actually another issue that this masked rather than fixing it. That will come in a seperate PR. Report missing gms in overnight/manual GM Tests (#10988) 5615843df1 Now when Rive Slack Bot posts to the golden channel when a gm run (both gl and vulkan), it will also report the missing results (and missing goldens, should that be a thing) if there are any. fix(renderer): d3d12 AMD / Intel support / raster order support (#10983) c47562209d * 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 Bump to latest wagyu port (build 69) (#10977) d0b67890c8 Bump to latest wagyu port (build 69) to get access to wgpuWagyuStringArrayFreeMembers feat(vk): Support faster texture updates (#10978) 0049d6e21e fix: crash when multiple definitions have the same name (#10976) 43585faefe Improvements to Browserstack golden/gm runs (#10967) d2f21b08aa A few quality-of-life improvements to the way the Browserstack runs (and image diffing) work and look. - Add a Device Summary to the generated diff page that shows the list of devices and how many tests passed/failed/were missing for each (with failures sorted to the top). This makes it easier when things are failing a lot (like currently in Vulkan) to more easily where the failures are - Fix an error when running the Browserstack script on Windows - Add the Android OS version to the device name (there are multiple of the same device make/model on Browerstack running on different OS versions, and we were squishing their results together into one pile) - Simplify the device name for devices with a redundant model name (i.e. Google_Pixel_6 instead of Google_Pixel_6_Pixel_6) - Set a display name on browser stack (mostly so that the browserstack dashboard will stop showing a warning that some tests don't have names), but the display name contains the backend name (or default if it was unspecified) so browsing between gl and vulkan runs is easier - Unified color definitions (and changed a couple to be easier to read, especially in the device summary page) - Fixed how some of the text was being injected into the template to not contain a bunch of (conveniently invisible) \ns (that is, the actual text \n was in the document, not as newlines) - Diff page no longer shows the "pass" and "identical" sections if it's in fails_only mode chore(scripting): add support for creating pointer events in scripts (#10968) 2daf848d0a fix(unreal): Several fixes for unreal (#10963) 5a321f1807 * added setter methods for properties * made lists a reference. unsettle artboard in a bunch of places that needed it. * made lists references. Removed field notify value from lists. * added context menu entry for cleaning generated classes * started implementing clean function * added clean context menu entry for cleaning up duplicate blueprint types * attempting to make list manipulation more stable * re arranged how view models work * rebase error * now properly removes handle even if objects goes out of scope * uneeded header and clang format * more uneeded header * missing check * added unit test for getHandleForInstance * addresed pr comments * pr comments * missing semi colon * clang-format refactor(renderer): move gamma correction logic to atomic resolve. (#10966) b9471b7d2a * updated unreal msaa shaders to use new includes * moved gamma convert to be at end instead of begining Co-authored-by: Gordon <pggordonhayes@gmail.com>
1 parent fbe806a commit 786587c

5 files changed

Lines changed: 132 additions & 8 deletions

File tree

.rive_head

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
6b091f8286bf036c9741f97485a6863007f9a7e7
1+
6b8c2178ff7e613663b464c3ec8083e886220993
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#!/bin/bash
2+
3+
# This script updates the pubspec.yaml file to ensure rive_native
4+
# is set as a path dependency (../rive_native)
5+
6+
PUBSPEC="pubspec.yaml"
7+
RIVE_NATIVE_PATH="../rive_native"
8+
9+
if ! [ -f "$PUBSPEC" ]; then
10+
echo "pubspec.yaml not found!"
11+
exit 1
12+
fi
13+
14+
# Replace the rive_native dependency with a path-based dependency
15+
# This handles both inline format (rive_native: 0.0.16) and existing path format
16+
sed -i.bak '
17+
/^[[:space:]]*rive_native:/ {
18+
# Print the rive_native: line
19+
c\
20+
rive_native:\
21+
path: '"$RIVE_NATIVE_PATH"'
22+
# If the next line is a path: line, delete it
23+
n
24+
/^[[:space:]]*path:/d
25+
}
26+
' "$PUBSPEC"
27+
28+
rm -f "${PUBSPEC}.bak"
29+
30+
echo "Updated rive_native dependency to path: $RIVE_NATIVE_PATH in pubspec.yaml"

test/artboard_test.dart

Lines changed: 0 additions & 7 deletions
This file was deleted.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:adf0dd0ab7dff250ba939403cba5b0bf6004a09c735b183fbc623213eb28249a
3+
size 693
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
import 'dart:io';
2+
3+
import 'package:flutter/rendering.dart';
4+
import 'package:flutter_test/flutter_test.dart';
5+
import 'package:rive/rive.dart' as rive;
6+
7+
void main() {
8+
late rive.File riveFile;
9+
setUp(() async {
10+
final file = File('test/assets/rive_file_controller_test.riv');
11+
final bytes = await file.readAsBytes();
12+
final riveFactory = rive.Factory.flutter;
13+
riveFile = await rive.File.decode(
14+
bytes,
15+
riveFactory: riveFactory,
16+
) as rive.File;
17+
});
18+
19+
test('Rive File controller defaults', () async {
20+
final controller = rive.RiveWidgetController(riveFile);
21+
22+
expect(controller.artboard.name, 'Artboard1');
23+
expect(controller.stateMachine.name, 'State Machine 1');
24+
expect(controller.active, true);
25+
expect(controller.cursor, MouseCursor.defer);
26+
expect(controller.hitTestBehavior, rive.RiveHitTestBehavior.opaque);
27+
expect(controller.alignment, Alignment.center);
28+
expect(controller.fit, rive.Fit.contain);
29+
expect(controller.isTickerActive, false);
30+
expect(controller.layoutScaleFactor, 1.0);
31+
expect(controller.size, Size.zero);
32+
});
33+
34+
test('Rive File controller can specify specific artboard', () async {
35+
var controller = rive.RiveWidgetController(
36+
riveFile,
37+
artboardSelector: rive.ArtboardSelector.byDefault(),
38+
);
39+
expect(controller.artboard.name, 'Artboard1');
40+
controller = rive.RiveWidgetController(
41+
riveFile,
42+
artboardSelector: rive.ArtboardSelector.byName('Artboard2'),
43+
);
44+
expect(controller.artboard.name, 'Artboard2');
45+
controller = rive.RiveWidgetController(
46+
riveFile,
47+
artboardSelector: rive.ArtboardSelector.byIndex(1),
48+
);
49+
expect(controller.artboard.name, 'Artboard2');
50+
});
51+
52+
test('Rive File controller can specify specific state machine', () async {
53+
var controller = rive.RiveWidgetController(
54+
riveFile,
55+
stateMachineSelector: rive.StateMachineSelector.byDefault(),
56+
);
57+
expect(controller.stateMachine.name, 'State Machine 1');
58+
controller = rive.RiveWidgetController(
59+
riveFile,
60+
stateMachineSelector: rive.StateMachineSelector.byName('State Machine 2'),
61+
);
62+
expect(controller.stateMachine.name, 'State Machine 2');
63+
controller = rive.RiveWidgetController(
64+
riveFile,
65+
stateMachineSelector: rive.StateMachineSelector.byIndex(1),
66+
);
67+
expect(controller.stateMachine.name, 'State Machine 2');
68+
});
69+
70+
test('Rive File controller can update properties', () async {
71+
final controller = rive.RiveWidgetController(riveFile);
72+
controller.active = false;
73+
expect(controller.active, false);
74+
controller.cursor = MouseCursor.uncontrolled;
75+
expect(controller.cursor, MouseCursor.uncontrolled);
76+
controller.hitTestBehavior = rive.RiveHitTestBehavior.transparent;
77+
expect(controller.hitTestBehavior, rive.RiveHitTestBehavior.transparent);
78+
controller.alignment = Alignment.topLeft;
79+
expect(controller.alignment, Alignment.topLeft);
80+
controller.fit = rive.Fit.layout;
81+
expect(controller.fit, rive.Fit.layout);
82+
controller.layoutScaleFactor = 2.0;
83+
expect(controller.layoutScaleFactor, 2.0);
84+
});
85+
86+
test('Continue to advance on active', () async {
87+
final controller = rive.RiveWidgetController(riveFile);
88+
final shouldContinue = controller.advance(1 / 60);
89+
expect(shouldContinue, true);
90+
});
91+
92+
test('Stop advance on inactive', () async {
93+
final controller = rive.RiveWidgetController(riveFile);
94+
controller.active = false;
95+
final shouldContinue = controller.advance(1 / 60);
96+
expect(shouldContinue, false);
97+
});
98+
}

0 commit comments

Comments
 (0)