{{ message }}
Rebuild ello/main on upstream 0.14.9: drop threaded surface, keep profiling + dpr fix#7
Open
tamirh wants to merge 10 commits into
Open
Rebuild ello/main on upstream 0.14.9: drop threaded surface, keep profiling + dpr fix#7tamirh wants to merge 10 commits into
tamirh wants to merge 10 commits into
Conversation
…5) 0341f847b8 * refactor(flutter): properly settle multiple painters in shared texture * fix: example late usage * fix: panel issues * chore: cleanup * fix: allow for rotation transforms * docs: update CHANGELOG * ci: run all flutter tests when only rive_flutter changes * chore: address review comments * fix: null shared painter on didUpdateWidget with a different controller * docs: update changelog * chore: update changelog * test: swap to integration test for rive factory shared texture Nnnnn gamepad input support (#12646) 867dce9f73 * feature(UAT): add gamepad support Add gpu compressed decoders (#12237) 195d4fcb25 * feat(renderer): GPU compressed texture support (BC7 / ASTC / ETC2) - Software decoders for BC, ASTC, ETC2 in the decoders library. - KTX2 reader extended to parse BC7, ASTC LDR (all footprints), ETC2 RGBA8. - Ktx2HwSupport + per-backend cap flags; DecodeKtx2 falls back to SW decode + tight RGBA mip chain when HW lacks the format. - Native compressed upload in Vulkan, GL, Metal, WebGPU (D3D11/D3D12 already supported BC7); per-mip uploads, no auto-mipgen for compressed. - Texture compressor premultiplies alpha before BC7 encode so output matches the runtime PNG path. - Android CMakeLists exposes decoders include directory. * Android break * fix(android): always expose decoders/include for renderer sources * fix(decoders): include <cstdio> for stderr in texture_decoder.cpp * Clang format * Update premake5_pls_renderer.lua * Update render_context_gl_impl.cpp * Update render_context_vulkan_impl.cpp * Fix null renderer * Update decode_ktx2.hpp * Update astc_footprints.hpp * Copyright * Update texture_decoder.cpp * Comments * Comments * Update to ETC * Update decode_bc_texture.cpp * Update decode_bc_texture.cpp * More comments * Comments * Bug fix on block sizes * Clang format * Fix ASTC * Fix android * Update UE and Other platform * Update render_context_vulkan_impl.cpp * Josh Comments feature(scripting): LuauDirectFieldGet for hot userdata reads (#12650) fe77b2ec3d * Adopt LuauDirectFieldGet for hot userdata reads * Format benchmark * Match audio_source slow path: nil when source is null fix(runtime): fix data bind container re-entries (#12649) 0649b58ff5 ci: move linux + windows rive_native builds to self-hosted; fetch prebuilt premake on windows (#12640) 1548d0bb39 * ci: move linux + windows rive_native builds to self-hosted * ci: restore linux apt deps, revert windows to hosted (warpbuild VS license expired) * ci: add clang and build tools to linux apt deps * build: fetch prebuilt premake on windows instead of bootstrapping * ci: try warpbuild for windows rive_native build remove lua_gc and set File reference as raw pointer (#12590) 1ff3ef872f * remove lua_gc * chore(runtime): keep a reference to the file from root level instanced artboards fix(luau): GC crash in markroot from FFlag flip after lua_newstate (#12638) 6f4bc8aa47 fix: exclude VM-runtime-affecting Luau FFlags + regression tests chore: bump vendored luau fork to rive_0_36 (#12632) dc34cab787 * chore: bump vendored luau fork to rive_0_36 * chore: exclude bytecode-version-bumping FFlags from default-enable loop * chore: add Bytecode/include to luau_analyzer for upstream module split GPUCanvas: deferred construction, beginRenderPass with view sugar, generator gets Context (#12634) 69767598c6 * feat(gpu): move beginRenderPass to GPUCanvas with view sugar; pass Context to script generator * fix(gpu): allocate new canvas backing before unref'ing old image; clarify typeAt comment chore: Add "resize" Image fit type to differentiate from "fill" (#12627) 91c4dd9b77 We need a new fit type for images to indicate "legacy" behavior. The difference between legacy and "fill" is that prior to adding support for fit types and alignment, the position of the image in a layout was driven entirely by its x,y values and its origin. However, fit types always apply their fit transform the same regardless of the origin. So for example, an image with origin 0% and one with origin 50% will render in the same position (as determined by alignment), but that is different than how we applied transforms for images prior to this feature. This is resolved by adding a new "resize" fit type, which is the default value and maintains the old behavior. All other behaviors need to explicitly set another fit type. Types "resize" and "fill" behave the same when origin is set to its default 0%. fix: Ore Y-flip in shaders + platform Vulkan + D3D11/D3D12 wiring (#12581) 464703668f ORE Vulkan hardening, Y-flip via shader, D3D wiring, NX port Squashed from 22 commits on ore_vulkan_fix (PR #12581). Vulkan hardening: - RenderPass texture rcps + stencil-ref keep-alives (prevents script-side rcp drop from racing the recording CB; backs WebGPU stencil-ref-is-pass-state semantics against VK_DYNAMIC_STATE_STENCIL_REFERENCE). - Generalized vkQueueTransitionToLayout + pipelineStageAndAccessForLayout helper (modeled after Dawn's VulkanPipelineStage). - vkFormatFor(): runtime D24S8 vs D32S8 probe based on GetPhysicalDeviceFormatProperties. - ensureCmdBufRecording: auto-reopen CB when scripted call happens outside host begin/endFrame bracket. - Orphan-CB flush at top of beginFrame and ~ContextVulkan. - Default in-pass viewport/scissor (Y-down; depth-only passes that never call setViewport need Vulkan-native viewport). - Deferred BindGroup destroy in RenderPassVulkan::finish (CB references descriptor sets until frame fence signals). - ORE Vulkan loadOp::load initialLayout fix (was SRO, now COLOR_ATTACHMENT_OPTIMAL). Path A Y-flip via shader: - naga_ffi ADJUST_COORDINATE_SPACE; positive viewport + identity frontFace on Vulkan side. - Depth-only HLSL bake (no fragment entry) in scripting_workspace + lua_gpu.cpp. D3D11 + D3D12 ORE wiring in fiddle_context. Player: drawInternal to skip implicit drawCanvases re-entry. Platform Vulkan testing-window hook for builds without rive_vk_bootstrap. NX (NX64) Vulkan port. fix(unity): add missing neon palette png symbols to fix iOS crash (#12620) 463745fd0b chore(focus): expose focus polling API (#12617) fdb0536723 refactor(ore): convert ore classes to be virtual with per backend implementations (#12599) e5c20369ec * started pulling out ore objects into dynamic variants * d3d11,12 and gl updated to use dynamic types * vulkan and gl now compiling * started ore wgpu * wgpu ore compiles * build system sorted * started metal impl * metal / gl update * fixed compile and linker errors * fixed convert renderpass to unique ptr * updated gm helper * missing macro guard * wrong macro * remove invalid assert * better define guard * same * build file tweaks * better macros * wasm compiling * redone stuff * properly handle emscrupten * linux link issue fix * missing filter reset * another try * another try fix: Scroll to hidden layouts using scrollIndex (#12598) 679b808585 Fixes 2 issues: 1. When setting scrollIndex to an index that has a layout that is hidden, it would always get set to index 0 because its bounds were 0,0,0,0. Now, if this happens, we: 1) look forward in the list to find the bounds of the next layout with valid bounds, if we are using carousel, we wrap around to the start of the list and keep looking 2) for non carousel, if we reach the end of the list, walk backwards from the index until we find a visible item. 2. Always just set the index value when setting it on a keyframe. Otherwise when there are hidden items, this could result in the scrollIndex not being the same as the value the user intended to key. This also fixes crashes related to setting scrollIndex to hidden items due to NaN values. fix: PropertyRecorder UB calling &front() on empty buffers (#12607) 623d5fe7a3 feat(wgpu): Use wgsl (finally) in the WebGPU backend (#12541) d779307982 Transpiles shaders from spv to wgsl using naga. Naga automatically transforms specialization constants into wgsl override constants, which we then set via the WebGPU API. However, naga is more limited in what it supports for specialization constants (namely, it does not support SpecConstantOp), so we switch all our specialization constants to plain bools that don't need manipulation. Updates the WebGPU backend to use this newly generated wgsl instead of spirv. Co-authored-by: Gordon <pggordonhayes@gmail.com>
…0a47d407 feature(scripting): serialize implemented methods (#12670) 8957983a44 feature(scripting): serialize implemented methods, detected by executing the generator in the editor Co-authored-by: Gordon <pggordonhayes@gmail.com>
…25aa1 * fix(flutter): improve render texture flicker on resize * chore: review comments and additional improvements * fix: perform block on main thread when swapping textures * chore: clang format * fix: laggy graphic on macOS during window resize * chore: update CHANGELOG * chore: additional texture cleanup hardening * chore: revert native changes * docs: update CHANGELOG gl: route feathers to atlas on Mali-G52 to avoid PLS corruption (#12753) f60e429709 On Mali-G52 (Panfrost driver, e.g. MediaTek MT8169), shapes rendered with a feather come out with corrupted/fringed edges, and the corruption can spread to other geometry rendered in the same pixel-local-storage (PLS) pass. When a complex feather is rasterized directly into pixel local storage (the `CoverageType::pixelLocalStorage` path selected in `PathDraw::SelectCoverageType`), the Mali-G52 driver corrupts the PLS planes. This is the same class of failure already documented and worked around for PowerVR in `RenderContextGLImpl` (`alwaysFeatherToAtlas`). Small feathers are unaffected because they already route to the atlas via the `atlasScaleFactor <= 0.5` check; only larger feathers fall through to the direct-to-PLS path. Extend the existing `alwaysFeatherToAtlas` workaround (previously PowerVR-only) to Mali-G52, forcing feathers through the offscreen atlas instead of PLS. Reproduced on a Mali-G52 device. The corruption is deterministic and appears only on frames that render a feather; feather-free frames are unaffected. Setting `alwaysFeatherToAtlas = true` eliminates the corruption, confirmed with an on-device build. feat(renderer): Add scissor rectangle support for clipping (#12672) ae1042e910 This adds scissor rectangle support for clipped paths (currently only enabled in Vulkan), which currently is a fill rate improvement, but can be further leveraged to add even more optimizations in the future. chore(vulkan, android): Renderer now errors on Androids older than 10.0 (#12685) 1453e46bc1 We decided on a minimum version of Android 10.0 to allow Vulkan to run, but there was no enforcement in the Vulkan code. Now there is! chore(scripting): allow scripts to read image properties sourced from… (#12710) 57bfa223c1 chore(scripting): allow scripts to read image properties sourced from property values and not assets chore: prevent critical failures on future incompatible features (#12732) 4e27795b8a feat(cmdq): Command Server Canvas Support (#12717) 47b201bfae * made CommandServer create ScriptedVMs. * wrapped scripting context in correct macro * make the ScriptedVM an rcp param * moved params around to support android * avoid exposing ScriptVM * remove defaults * added no op render context impl * to many errors revert rcp para,m * remove more setOreContext locations * update guard tests * changed to static cast * build ore_gpu_guard_test no-rtti to fix typeinfo link error * fix detection VM ore context lifetime (retain render context) * updated buffer tests and also factored out mock context * fix doc * removed uneeded function Bezier render prototype (#12727) 4b2501f748 * Create .gitignore * Files * Remove loop blinn * Move to premake * clang format * Fix winding loop stuff * Remove loop blinn stuff * Update main.cpp * Comments * Moved files * clang * Update main.cpp test: bump RSTB version assertions to v4 (#12724) db24f50ecb ore: GPUBuffer descriptor-table constructor, expose colorBufferHalfFloat (#12718) 0bfcc5fff7 feature(ore): resolve shader entry points by name (RSTB v4) (#12715) b553e7dcb1 feat(ore): RSTB v4 entry-point containers, resolve @vertex/@Fragment by name ore: gate float render targets and baseVertex on backend features (#12712) 10e90773d5 * ore: gate float render targets and baseVertex on backend features * ore: test float renderTarget and baseVertex feature guards fix(ore): d3d12 upload stages caller region, not full subresource (#12702) 0cc614761c fix(ore): ContextVulkan TextureVulkan upload defer to next recording CB (#12700) cccee5e480 * fix ContextVulkan TextureVulkan upload defer to next recording CB * ore vulkan upload: batch flush barriers, fix array depth default, 64-bit region bounds * ore vulkan upload: 64-bit bytesPerRow fallback before uint32_t guard Deferred GPUCanvas reports speculative format (#12701) 557c18ea05 * feat(scripting): deferred GPUCanvas reports speculative format, drop preferredCanvasFormat * docs(scripting): GPUCanvas.format is always rgba8unorm, including deferred fix(ore): shader lookup folderPath and ContextGL uniform buffer save (#12698) 61e10a350d fix shader lookup folderPath and ContextGL uniform buffer save Nnnnn scripting and gamepad fixes (#12696) cb60c2b893 * fix(scripting): ensure stack is sized before pushing values * fix(gamepad editor): fix value types on ffi Bind native GPU texture as Rive RenderImage (#12606) f8c8d7cf8b * feat(unity): bind native GPU texture as RenderImage for video * feat(unity): Vulkan + D3D12 video binding backends * harden: sRGB hint, source-format gates, tighter comments * drop unused markChanged + RequestRedraw refactor(ore): Render context own ore (#12661) af004065e9 * started moving to external command buffer only * started converting all ore context to use only external cmd list * updated vulkan and d3d12 to use gpuresources * started moving to gpuresource * use an upload buffer now so that it can be frame tracked * updated android testing window * update metal testing window * update metal context * fixed lua isue * update to new api * fix * more * no command buffer for native * metlQueue requirement * update testing window android vulkan * fix * framebuffer now properly gets destroyed * updated wagyu testing window * begin / end frame for metal texture * updated vulkan texture and testing window gpu * fix compile error * fix(ore): refcount persistent VkDescriptorPool so it outlives bind groups * ore vulkan: generational descriptor pool fix (#12678) * ore vulkan: generational descriptor pool, no per-set free * ore vulkan: pool rollover gm * ci: run PR workflows on any base branch, not just master * chore: adding baselines for ore_pool_rollover * ore wgpu: keep CommandEncoder alive past Ore beginFrame move * ci: switch java distribution from zulu to temurin * fix: missing goldens * updated no_op_ore_context for new function * scripting: NoOpOreContext default ctor passes nullptr manager (#12692) * scripting: link gpu_resource.cpp into documentation_generator (#12693) feat(editor): Expose ScrollConstraint velocity and scrollActive computed properties (#12671) d797171a0b Customer asked whether its possible to hide scrollbars when a scroll constraint is inactive. Rather than implement that behavior, we expose computed velocity values in both x and y directions which will be non-zero when the scroll constraint is being dragged or swiped and released. In addition, we expose a scrollActive computed property that indicates if the scroll constraint is active in any way (dragging, swiped and released until being settled, being dragged by a scrollbar). Co-authored-by: Gordon <pggordonhayes@gmail.com>
feat(js): poll Rive focus state to conditionally drive focus back to the canvas from elsewhere in the DOM (#12713) 6169c50d9f * feat(js): poll Rive focus state to conditionally drive focus back to the canvas from elsewhere in the DOM * comment clarifications * Early return on polling logic before looking for active SM to work with * make fake sm stub in focusManagement tests more complete * Formatting fix * sp. and cleanup * ran simplify on changes * call focusNext/Previous when browser moves focus onto canvas automatically for keyboard interactions feat(Android): Vulkan (#12653) 528ab110eb Adds Vulkan support to the new Android runtime. Includes fixes to resize behavior. fix(runtime): assign view model instances to the right view models (#12756) 018a0724d9 Co-authored-by: Gordon <pggordonhayes@gmail.com>
…vents (#12785) c7e9a02fd8 * feat(flutter): immediately advance state machine on pointer up/down events * chore: gate advance call on non none HitResult * refactor: scope advanceOnPointerUpDown on RiveWidgetController (highest level) * chore: remove extra schedule repaint call * refactor: remove opt-out * refactore: more removals * chore: more docs cleanup feat(Android/Cmdq): Advance after pointer down and up (#12786) ba9b94960c There is possibility that if pointer down and up are received on the same frame, the down event would be missed. This addresses that by advancing by 0 in between down and up, allowing events/VMI bindings to propagate. Nnnnn export bindable object with different (#12779) a680ab80e5 * chore(runtime): remove unused list methods * fix(editor): export data bind if primary is not found Add Factory::ore() and drop the redundant ore context cache in ScriptingContext (#12769) 76eeeed5d9 * add Factory::ore() and drop the redundant ore context cache in ScriptingContext * store the command server render context as a Factory to avoid renderer header in core * move Factory::ore() to the end of the virtual section to keep vtable slots stable * drop the redundant command server render context arg and use the factory directly Co-authored-by: Gordon <pggordonhayes@gmail.com>
…2794) d2e7e96c9a * chore(flutter): remove experimental tag from shared texture usage * chore: review comment cleanup C++ Runtime Readme revamp (#12537) c8bb275d99 Co-authored-by: Gordon <pggordonhayes@gmail.com>
…95e2a4b2f4 * fix(flutter): treat touch/stylus pointer up as pointer exit * chore: cleanupg Add ASTC and ETC2 compression modes (#12518) 0ed7a0a13d * Add files * Update files * Clang format * Update image_asset.dart * remove old rtex references * Add block size stuff * Update render_context.cpp * Update premake5_pls_renderer.lua * Clang format * Fix build break after merge * Fix break due to conflict * Fix build break * Fix break * Fix conflict * Update export_rive_test.dart * Update export_rive_test.dart * Update premake5_pls_renderer.lua * Update theme_rename_audit_test.dart * Update Texture_compressor.cpp * Update encode_etc2.cpp * Update image_asset.json * Update image_asset.dart * Update comment * Potential fix for pull request finding * Potential fix for pull request finding * Fix astcBlockSize field-id collision with master's dragMultiplier master added ScrollConstraint.dragMultiplier at field key 1029, colliding with ImageAsset.astcBlockSize. Bump astcBlockSize to the next free key 1030 in both def trees and the generated Dart constant (rive_core_context.dart references it symbolically). Minimal change — no full regen / dart-fix churn. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Update testing_window_android_vulkan.cpp (#12898) 4bf87f97a6 * Update testing_window_android_vulkan.cpp * Update testing_window_android_vulkan.cpp Add include instead of fwd declare (#12897) c5b59b956e * Add include instead of fwd declare * Update player.cpp chore(runtime): notify property changes (#12683) 32f2243f54 * chore(runtime): add property notifier to avoid polling values on every frame * chore: improve memory usage feat(wgpu,webgl): Get WebGPU and WebGL deploying to a real browser (#12849) 684824c253 Also add CI testing for WebGL and WebGPU in Chrome Canary. fix(renderer): Get an external target building again (#12884) 3a6064b95e This change fixes one of the external platforms so that it builds again. There is no ore support for it at the moment, but the gms/goldens run on device feat: Scroll constraint drag multiplier (#12880) 2551181ab2 New dragMultiplier property (double, default 1.0) that scales pointer movement → scroll movement. 0.5 halves it, 2.0 doubles it. Applied before both the scroll-offset update and the physics accumulator, so drag feel and inertial release stay in sync. Inspector row added under Threshold. Velocity reporting A few related fixes while in this code: velocityX/Y now decays smoothly through fling and settle (previously froze at the last drag value at release). Velocity resets to 0 when a drag holds still; acceleration is preserved so release-into-fling still works. Scrollbar drag also updates velocityX/Y; scrollbar release clears it immediately. text vertical trim (#12861) a3fb919b91 * feature: add support for vertical trim * add passthrough properties for vertical trimming fix(Android): Unblock Android release flow (#12868) 77c82242bb Commit `c8bb275d99` introduced a new Git attribute for an existing file without re-normalizing that file. This fixes the normalization issue while also making the Android release process more resilient to it recurring in the future. When the commit changed the expected git attributes for .bat files, the existing .bat file was left stored with line endings that did not match Git's normalized index expectations. This caused the runtime submodule to appear dirty, which then blocked Android releases because release-it requires a clean working tree. The release workflow is now more resilient on top of fixing the dirty status. feat(command-queue): add file asset listing via FileListener (#12662) 4a612198f1 fix(runtime): invalidate all scripted VM property caches on instance swap (#12863) ca0054c077 fix: Snap enabled scrolling not respecting last item padding (#12856) f11274b5d9 With a scroll constraint inside a parent layout that has trailing padding, snapping past the last item settled flush to the viewport edge instead of leaving padding visible. Non-snap scrolling already respected padding; only snap was broken. Pulling past the end and releasing also snapped back without padding. chore(editor): Generate Windows pdbs for symbolication (#12720) 2fce4282b6 PR to get crash reports from Windows desktop editor. Build sentry with crashpad on Windows Generate debug symbols for Windows during release and upload to Sentry. Tested locally and verified Windows crashes are being sent to Sentry. fix(renderer/d3d11): guard MicroProfile GPU init against multi-context re-entry (#12766) 13fba5c3d5 chore: Stateful Component handling of source artboard databinds (#12776) e9483b78c4 Adds improved handling of binding source artboards on stateful components. Now the expected behavior is: The edit time source artboard set on the component is the one that gets a stateful viewmodel instance created at edit time At runtime, if that source artboard property is databound, we check if the selected artboard has the same viewmodel as the edit time artboard. If so, just reuse the stateful viewmodel instance. If the viewmodel is different, we instance a viewmodel at runtime and bind that to the components artboard. Relevant changes to VM instance ownership: NestedArtboard now holds a pointer to its stateful VM instance (not an rcp) which allows Artboard to unref it, NestedArtboard doesn't need to be concerned with that In the case where isStateful is true and the source artboard is databound, if the artboard's VM is different than the stateful VM, we do get an rcp to that instance, which we (NestedArtboard) own and need to unref Artboard's destructor still needs to go through the same process, the only thing is that it no longer needs to check if a VM instance's parent is nullptr because it now owns the stateful VM instances as well. fix(build): locate Visual Studio via vswhere as a fallback (#12840) c5d462f9d9 * fix(build): locate Visual Studio via vswhere as a fallback setup_windows_dev.ps1 only checked three hardcoded VS2022 edition paths, so it failed to find newer installs (e.g. VS2026) and aborted. Add a vswhere-based fallback (only on the path that previously errored) that finds any VS install with the C++ toolset, regardless of version or edition. Existing runners are unaffected: they short-circuit on fxc-on-PATH or the hardcoded 2022 paths before reaching the fallback. Needed by the self-hosted console build runners (Xbox/PS5), which run VS 2026. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(build): require VS 2022+ in the vswhere fallback Per review: -latest alone would happily return VS2019 (or older) if it's the newest installed, which can't build Rive. Add -version "[17.0,)" so the vswhere fallback only matches VS2022 (v17) or newer (e.g. VS2026 = v18). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> feat(wgpu): Implement InterlockMode::atomics (#12730) 72ac79b91f PLS planes (color, clip, coverage) are emulated as storage buffer<u32> arrays on RenderTargetWebGPU, indexed by a 32x32-tile swizzle for cache locality. glsl.glsl gains a new PLS_IMPL_STORAGE_BUFFER path alongside STORAGE_TEXTURE. renderPassInitialize becomes a real draw that seeds the color buffer on LoadAction::clear or LoadAction::preserveRenderTarget, and clears the coverage/clip buffers. The existing STORE_COLOR_CLEAR #ifdef and the new LOAD_COLOR_FROM_DST_TEXTURE branch are gated by specialization constants so one compiled shader covers all combinations. atomic_resolve_coalesced is a new shader variant for non-FFCO resolve that writes directly to the framebuffer attachment from the PLS color buffer. The per-flush bind group + pipeline layout move into a DrawPipelineLayout class keyed off InterlockMode, since atomic mode needs Fragment visibility on PATH/PAINT/PAINT_AUX storage buffers while other modes only access them from vertex. The Dawn fiddle context is pinned to D3D11 for now; other backends show sync issues in atomic mode that look like a Dawn bug. chore(runtime): add computed root values test (#12830) d17e462c1a fix(metal): exempt prepareToFlush from thread-safety analysis (#12734) 3a7bd9bfdf * fix(metal): exempt prepareToFlush from thread-safety analysis RenderContextMetalImpl::prepareToFlush acquires a buffer-ring lock that is released asymmetrically in a GPU completion handler scheduled by postFlush. Clang's -Wthread-safety analysis cannot follow a lock handed off into that block and flags the unbalanced lock(). The newer Clang in Xcode 26.4.1 turns this into a hard error for downstream builds that compile with -Wthread-safety -Werror. Add a portable RIVE_NO_THREAD_SAFETY_ANALYSIS macro and apply it to the prepareToFlush definition to exempt this intentional, correct locking pattern from the analysis. feature: fit text content by font size (#12792) c623003932 chore(tests): add test to catch missing BrowserStack gm images (#12806) 65383d26e5 Nothing in our CI was previously testing to make sure that the browserstack_gms images contained all of the images needed (when a new gm was introduced), now there is a test to do so. fix(ore/vk): MSAA resolve corruption on Xclipse 920 (resolve targets missed the post-pass layout hand-off) (#12810) bd3b3f3b75 * fix(ore/vk): hand off MSAA resolve target layout to Rive after the render pass * ci: un-skip ore_msaa_resolve on galaxy-s22 vk jobs, TEMP gate CI to s22 only * clang-format * rebaseline galaxy-s22 vk ore_msaa_resolve goldens * ci: restore full CI, revert temporary s22-only gating * review: ResolveTarget struct instead of parallel arrays, std::exchange in move ctor, drop stale glmsaa comment Co-authored-by: Gordon <pggordonhayes@gmail.com>
* chore(flutter): release 0.14.9 * chore: update changelog Rev Luau to rive_0_726 (upstream 0.726) (#12953) 61822bb247 Rev Luau to rive_0_726 and adapt scripting workspace to the 0.726 API chore(editor): add view model uses to dependencies panel (#12948) 63b8450361 fix(renderer): Update dead macro names (#12933) 09c54e8737 DISABLE_CLIP_RECT_FOR_VULKAN_MSAA was renamed to DISABLE_CLIP_DISTANCE_FOR_UBERSHADERS in #11040 (generalized from Vulkan-only to all MSAA ubershaders), which moved the #ifndef check sites to the new name. However, three #define sites were still on the old name. - draw_msaa_stencil.main - clear_clockwise_atomic_clip.main - init_clockwise_atomic_workaround.frag The latter two were added in #12120, five months after the rename, copy-pasting the already-dead define, so they had never once taken effect. fix(runtime): bidirectional data bind with source preference does not… (#12927) adb0834474 fix(runtime): bidirectional data bind with source preference does not overwrite target feat(renderer): Add scissor support to more backends (#12778) 424d2323f9 This adds support for using scissor rects during clips to OpenGL, D3D 11 and 12, and Metal. WebGPU and the external platforms are not yet done This also adds a few new gms, and updates the rebaseline script to work with a new directory (which does not have a subdirectory) Nnnnn focus management fixes (#12303) b2438309fa * sort focus nodes hierarchically * chore(focus): correctly handle focus with lists * fix virtualizableChanged lifecycle Feat: Updates to recorder to enable thumbnail generation in prod (#12878) fcbebb25e4 * Add ability to run recorder as a service * Fix includes * Further optimizations * ADd profiling * include profiler include * Make png compression level configurable * Add webp support * Fix webp build * Make webp lossless * productionise code * Fix writing * back to lossless * Fix up main * Clang format * PR feedback fixes * Split libweb enc * Fix PR feedback Co-authored-by: Gordon <pggordonhayes@gmail.com>
Adds riveAdvanceProfilingEnabled flag and Stopwatch-based instrumentation to RiveWidgetController.advance(). When enabled, emits Timeline.instantSync events with artboard name, advance duration (us), and whether the state machine changed. (cherry picked from commit 0ccd246)
Apps that override MediaQuery.devicePixelRatio (device-preview shells, resolution scalers) diverge from the real view dpr the shared texture is sized/flushed at, mispositioning offset painters. Read the real, non-overridable view dpr for the value while keeping a MediaQuery dpr dependency so runtime dpr changes still rebuild. Upstream 0.14.9 already carries the full-affine transform (Mat2D.fromMat4) and native shared-texture settling, so only the dpr source remains as an Ello delta.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

tl;dr
Rebuilds
ello/maincleanly onto upstreamrive-app/rive-flutter@0.14.9, carrying only the two non-threaded Ello deltas that upstream still lacks, and dropping the entire threaded/background-advance surface. Part of XP-2114 — Drop Rive Native Fork (threaded Rive is being fully removed from the app).This branch is a clean rebuild off
0.14.9, not a descendant of the currentello/main. Recommended merge is to resetello/mainto this branch (or merge and let it supersede) — the intent is "this is whereello/mainshould sit after the threaded work is retired."What changed vs the current (0.14.7-based)
ello/mainDropped — the whole threaded/background-advance surface (no longer used by the app):
BackgroundRiveWidgetController/ThreadedRiveController,BackgroundRiveView/ThreadedRiveView,RiveThreadedFfi, theThreadedFrame/SnapshotEntry/RiveThreadedEvent/SnapshotValueTypere-exports,subscribePendingPort/acquireFrame/drainPolls/hasFatalError, and the XP-1123 threaded Fit-frame surface. All of this depended on theElloTechnology/rive-nativefork's FFI, which is also being dropped in favor of publishedrive_native 0.1.9.Dropped — the dirty-flag skip-frame optimization (
e3ce32c/c91737c/7b732d8+ theonFrameTick/advanceIntervalchange): superseded by upstream. Upstream 0.14.8/0.14.9 added native shared-texture settling —paintIntoSharedTexturenow returns whether the painter is still animating and the centralized ticker stops when every painter settles (and explicitly avoids reviving settled siblings). That is the same optimization our fork carried, now done natively, so we adopt upstream's.Kept — the two deltas upstream still lacks:
riveAdvanceProfilingEnabled) — consumed by the app'sRiveAdvanceBenchmarkService. Self-contained addition towidget_controller.dart; applied clean onto 0.14.9.View.of(context).devicePixelRatioinstead ofMediaQuery.devicePixelRatioOf(context)(ENG-5361). Confirmed still needed: upstream 0.14.9 still readsMediaQuery.devicePixelRatioOf(shared_texture_view.dart:46,rive_panel.dart:172), so an app that overrides MediaQuery's dpr (device-preview shells, resolution scalers — Ello uses both) still mispositions offset shared-texture painters. Re-applied onto 0.14.9's rewritten transform code (which already carries the full-affineMat2D.fromMat4transform we also wanted, so only the dpr source remains as a delta). AMediaQuery.devicePixelRatioOfdependency is kept so runtime dpr changes still rebuild.Verification
flutter analyze libis clean except two pre-existing upstream barrel-export warnings (RiveSemanticsMixin/RiveSemanticsWidgetinlib/rive.dart) that exist on stock 0.14.9 and are untouched here.The dpr-fix change is rendering-critical. Please verify the character rig positions correctly on a dpr-override surface (iPad portrait via the app's
ScreenScaler, and/or the on-device Device Preview shell) before updatingello/main. Everything else is either upstream 0.14.9 as-published or a clean self-contained addition.(Written by AI)