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.
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.
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.
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.
* 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
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
* 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
* Started adding msaa mode to rhi
* initial state msaa working on d3d12
* Now set stencil ref via set pipeline state
* set stencil in correct location
* vulkan msaa working for non advanced blend in rhi
* fixed missing check for msaa
* proper merge msaa and fix advanced blend for atomics
* added COALESCED_PLS_RESOLVE_AND_TRANSFER permutation and added better shader compile exclusions
* Now uses coalesce resolve
* base msaa working in d3d12 rhi
* mac support for non advanced blend msaa
* finally wokring on both dx12 and vulkan
* seperated out splitting render passes by a platform feature flag
* better name
* merge master
* some odd typo
* better matrix compare
* better comment
* glsl syntax fix
* removed commented code
* removed is matrix function in favor of all() as per PR comment
* factored out modify shader as a subcless
* updated cvar variable
* fix typo
* followed PR comments
* more pr comments
* clip planes actually do work now
* removed FixedFunctionColorOutput variable in favor of the flush desc member var
* fixed type restrictions and clang format
* improved comment and added missed file from last commit
* revert factoring common code because it was causing several errors
* factored out common shader code
* check clip plane support
* changed back to vulkan only
Device fixes:
- Break the MSAA resolve off into a separate render subpass to resolve corruption on some Adreno devices
- Work around an issue where some early Mali drivers report Vulkan 1.1 support but are missing the allocation functions that vma is looking for
- Some of those Mali devices spew incorrect validation errors about the inability to create, say, an RGB8 texture because the maximum mipmap count is 0 (and other similar "oops we queried and got 0" errors) even though the images actually create fine. Added them to an ignore list.
- The MSAA color and depth/stencil textures are now being created with the TRANSIENT bit (this doesn't fix any known device issues but it does seem more correct)
Other improvements:
- vk_check now displays a string representation of the vulkan error instead of just its numeric value
- the abort handler on Android now also prints the stack trace (to make debugging easier)
- fiddle_context_vulkan now requests the correct width and height for image capture
- The queueImageCopy function in swapchain was not properly setting the pixel read bounds to the whole swapchain if passed an empty AABB
* rev to rive_luau_18
* fix: for change in luau
* fix: default old solver
* adding back missing files
* fix: test
* update .riv files
* chore: updated to luau 0.697
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.
On some Adreno models, gradients were not properly rendering properly, due to the texture/gradient coordinates always being 0
This was caused by what appears to be a driver bug, in which doing vkUpdateDescriptorSets with multiple descriptors (in our case, updating paintData and paintAuxData in a single call) would fail to properly commit the data from the second one. We're only doing this in the one place. Separating this into two calls causes gradients and images to now display as expected.
The shader key and render pass key were both including the interlock
mode, and the pipeline key was so full that adding a new interlock mode
would overflow it. Only include the interlock mode once.
A recent refactor introduced an issue on Vivo Y21 and Oppo Reno 3 where
writes to pixel local storage got disabled when the color mask was off.
Just leave the color mask enabled in EXT_shader_pixel_local_storage
mode.