Adreno 308 had a few issues:
* Crash from drawing too many instances, which we work around by
breaking them up with glFlush.
* Compiler failure from the compiler declaring a 3.1 bulitin in ESSL
3.0, which we work around with a #define.
* The advertised max texture size is 8192, but textures larger than
2048 seem to not work with EXT_multisampled_render_to_texture.
Either way, we shouldn't have any gms larger than 2048 since that's
the bare minimum per the spec. Shrink the larger gms down to 2048.
Rive had an issue as well:
* With EXT_multisampled_render_to_texture but not
KHR_blend_equation_advanced, we were trying to use the same texture
for both msaa and the dstRead. Separate these into their own
textures.
Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
fix(editor): Properly remove all script core objects when deleted (#11324) a3e784a1f0
3 Fixes for Script asset deletion in this PR:
- Present a confirmation dialog if the script is being used by any scripted object on any artboard
- When script asset is deleted, make sure to clean up all of the associated core code file/line/points
- Also remove the LibraryCodeFile from the library cache. This fixes a bug where after deleting a library script, you couldn't add it back to the file again.
Co-authored-by: Philip Chung <philterdesign@gmail.com>
Testing window was restructured to allow the tests to destroy/recreate the device, but the render target was not being (re)created when the device was.
Co-authored-by: Josh Jersild <joshua@rive.app>
When the renderTarget doesn't support
VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, we have to use an offscreen color
texture instead. Previously, we would copy this offscreen texture back
into the renderTarget after the render pass, which incurred a
substantial amount of memory bandwidth. This PR instead transfers the
offscreen texture to the renderTarget as part of the render pass, and
then discards the offscreen texture, saving a fullscreen copy on TBDR
architectures.
Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
Color ramps are the final resource texture we need to make interruptible
for old Android GPUs that don't support complex render passes.
Also fix lots_of_tess_spans to look the same on MSAA and not.
Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
* fix(vulkan) Tighten the requirements for destroying/recreating the vulkan gms on Adrenos
This was causing a test failure on a couple devices with the same chipset and driver
* Increase timeout to 5
Co-authored-by: Josh Jersild <joshua@rive.app>
* feature(scripting): add support for accessing view models from context and creating view model from global data
Co-authored-by: hernan <hernan@rive.app>
lots_of_tess_spans_stroke is seeing a histogram result as low as .95087
on a correct image. Bump the default tolerance to .05 so we don't get
false negatives. Hopefully this holds us over until we can work on more
accurate image diffing.
Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
We had a nice comment describing why we shouldn't create the overflow
texture with VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, but then we went ahead
and accidentally created it as an input attachment anyway.
This PR actually applies the workaround described in the comment.
Also apply the "teardown after every GM" workaround to Adreno pre 1.3 GPUs,
since those also experience sporadic crashes and this appears to help.
Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
The Mali Vulkan driver/device was running out of memory internally, occasionally. This adds a hook into the testing window that gets run after each GM finishes, which TestingWindowAndroidVulkan now uses to tear the device down completely. The device then gets rebuilt as needed.
Co-authored-by: Josh Jersild <joshua@rive.app>
chore(vk): Make the tessellation pass interruptible
We recently worked around some driver crashes on Vulkan by breaking up
atlas & draw render passes that were too complex. This PR makes the
exact same workaround for tessellation passes, and adds a GM to catch
this case.
Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
* feat: working on focusable
* feat: text events to rive native
* feat: runtime text from editor
* feat: text input in the editor
* chore: cleanup
* chore: fix non text builds
* chore: fix warning
* fix: key import in rive_native_web
* feat: text input for web rive_native
* chore: fixes
* chore: cleanup
* fix: remove unused imports
* chore: more tests for missed lines
Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
* Added set / reset size for artboarsd to command queue. Use this for render targets in unrel. Set size directly for widgets.
* removed original bounds
* made state machine advance when setting size
Co-authored-by: Jonathon Copeland <jcopela4@gmail.com>
This change primarily works around a driver issue that was causing visual corruption on some newer Adreno-based devices.
There are other minor changes as well (displaying the driver version from the bootstrapping code, setting a minimum requirement of Vulkan 1.1 in the renderer)
Co-authored-by: Josh Jersild <joshua@rive.app>