renovate[bot]
3f9f19b7ac
fix(deps): update rust dependencies
2024-03-14 16:45:29 +01:00
Aaron Hill
81604dd21c
Request highest 'max_inter_stage_shader_components' supported by adapter
...
We're currently always requesting a maximum of 31 components, which
is too low for some SWFs.
2024-03-09 15:39:33 -05:00
renovate[bot]
a916369f21
fix(deps): update rust dependencies
2024-03-06 21:58:40 +01:00
Nathan Adams
baa0c5c7cd
desktop: Use custom (de)serialization for preferences, not serde
2024-03-05 00:02:27 +01:00
Nathan Adams
b9c6db1cb9
desktop: Add preferences dialog, allow setting of graphics backend/power
2024-03-05 00:02:27 +01:00
Nathan Adams
8df7efb662
desktop: Load graphics preferences from disk
2024-03-05 00:02:27 +01:00
renovate[bot]
fae1c458ec
fix(deps): update rust dependencies
2024-03-04 22:18:19 +01:00
TÖRÖK Attila
2e52ee9f33
chore: Bump `js-sys` and `web-sys` to `v0.3.69`
2024-03-04 19:01:04 +01:00
TÖRÖK Attila
7f268bf50e
chore: Update `wasm-bindgen` to `v0.2.92`, wasm-bindgen-futures to `v0.4.42`
2024-03-04 19:01:04 +01:00
renovate[bot]
c2179e88db
fix(deps): update rust dependencies
2024-03-02 10:05:43 +01:00
renovate[bot]
35d72115a4
fix(deps): update wasm-bindgen
2024-03-02 02:42:45 +01:00
renovate[bot]
6e84b05b66
fix(deps): update rust dependencies
2024-03-01 22:46:32 +01:00
Aaron Hill
900a8407d6
core: Implement lazy decoding of bitmaps
...
We hit a pathological case in House
(https://github.com/ruffle-rs/ruffle/issues/15154 ),
where eagerly decoding bitmaps during preloading results in
over 10GB of ram being used.
With this PR, we store the compressed bitmap, and only decode it
each time we instantiate it. In order to support bitmap fills,
we store the decoded width/height and a lazily-initialized GPU handle
in `Character::Bitmap`
2024-02-27 21:18:18 -05:00
renovate[bot]
9cdb2f31cc
fix(deps): update rust dependencies
2024-02-26 08:14:26 +01:00
renovate[bot]
6b89737093
fix(deps): update rust dependencies
2024-02-19 11:32:22 +01:00
renovate[bot]
637b277481
web: chore: Bump wasm-bindgen to 0.2.91
2024-02-16 09:48:30 +01:00
renovate[bot]
477440d387
fix(deps): update rust dependencies
2024-02-05 07:56:07 +01:00
Aaron Hill
86e471835e
Fix clippy beta lint
2024-02-04 21:14:05 +01:00
Nathan Adams
2e0e7aec5c
wgpu: Remove the readback-upgrade path. It's now slower than normal drawing
2024-02-02 00:59:45 +01:00
Nathan Adams
70af5cd5dd
wgpu: Submit occasionally to avoid submitting a large encoder
2024-02-02 00:59:45 +01:00
Nathan Adams
fb8f3301b6
wgpu: Queue up offscreen draws, don't do them immediately
2024-02-02 00:59:45 +01:00
Nathan Adams
70fbb4a7ac
render: Move away from SyncHandle.retrieve_offscreen_texture to RenderBackend::resolve_sync_handle
2024-02-02 00:59:45 +01:00
Nathan Adams
1a5dff5d12
wgpu: Keep a CommandEncoder for the duration of a frame, extract out a struct to hold it with a StagingBelt
2024-02-02 00:59:45 +01:00
renovate[bot]
3737725a21
fix(deps): update rust dependencies
2024-01-30 09:23:15 +01:00
Nathan Adams
fcb74d8fbc
wgpu: Deduplicate common gradients from a single Mesh
2024-01-27 21:37:22 +01:00
Nathan Adams
e479d12af0
render: Make Mesh a struct, not just an alias for Vec<Draw>
2024-01-27 21:37:22 +01:00
Nathan Adams
2d42abcb70
wgpu: Don't use max_uniform_buffer_binding_size as a limit for BufferBuilder when making meshes
2024-01-27 21:37:22 +01:00
Nathan Adams
ab404bae2a
wgpu: Remove ouroboros and typed-arena, no longer needed
2024-01-27 21:37:22 +01:00
Nathan Adams
3be2efe7cf
wgpu: Clean up DynamicTransforms, after the merge
2024-01-27 21:37:22 +01:00
Nathan Adams
c3423b86f8
wgpu: Use vertex buffer and staging belt for bevel filter
2024-01-27 21:37:22 +01:00
Nathan Adams
7e0bd48061
wgpu: Use vertex buffer and staging belt for glow filter
2024-01-27 21:37:22 +01:00
Nathan Adams
2722a6588e
wgpu: Use vertex buffer and staging belt for simple filters
2024-01-27 21:37:22 +01:00
Nathan Adams
9320de354c
wgpu: Use staging belt and single buffer for filter arguments
2024-01-27 21:37:22 +01:00
Nathan Adams
76d07faacf
wgpu: Make sync index Option<> in make_queue_sync_handle
2024-01-27 21:37:22 +01:00
Nathan Adams
f99f89122a
wgpu: Remove uniform encoder
2024-01-27 21:37:22 +01:00
Nathan Adams
de975a9727
wgpu: Merge Transforms and ColorAdjustments
2024-01-27 21:37:22 +01:00
Nathan Adams
1231d2fead
wgpu: Extract out ESTIMATED_OBJECTS_PER_CHUNK, set it to 200
2024-01-27 21:37:22 +01:00
Nathan Adams
574e83f3a3
wgpu: Use max_uniform_buffer_binding_size from adapter
2024-01-27 21:37:22 +01:00
Nathan Adams
befce41e11
wgpu: Remove push constant support - simplifies code significantly, and it should be same perf now
2024-01-27 21:37:22 +01:00
Nathan Adams
fd604b3a18
wgpu: Try using a single buffer/bindgroup for transform/colortransforms, no longer dynamically allocated
2024-01-27 21:37:22 +01:00
Nathan Adams
6824f33cc6
wgpu: Add limits to BufferBuilder (but currently not respected for Meshes)
2024-01-27 21:37:22 +01:00
Aaron Hill
820e7e828a
wgpu: Allow Stage3D texture upload where source is smaller than dest
...
Fancy Pants World 4 relies on this behavior.
2024-01-25 00:30:10 +01:00
Aaron Hill
1cb24b41b0
render: Support PixelBender ByteArray/Vector.<Number> input/output
...
When ActionScript uses a ByteArray/Vector.<Number> as a shader input
or target, we create a temporary Rgba32Float texture, and copy the
input float32 bytes to/from the texture.
Unfortunately, wgpu doesn't seem to support an Rgb32Float (3-channel)
texture. When the shader uses 3 channels, we use a Rgba32Float
(4-channel) texture, and manually insert/remove padding for the
alpha channels. This isn't very efficient, but it's the simplest
solution.
The temporary textures themselves aren't cached anywhere - if this
becomes a performance issue, we could look into using some of our
existing wgpu texture/buffer pooling code.
2024-01-24 08:31:52 -05:00
renovate[bot]
262dff83a4
fix(deps): update rust dependencies
2024-01-22 03:09:33 +01:00
Nathan Adams
c63f51f823
web: Enable webgpu
2024-01-21 19:36:08 +01:00
Nathan Adams
4d16e24889
wgpu: Update wgpu and naga to 0.19
2024-01-21 19:36:08 +01:00
Aaron Hill
e73819d531
Use supported_sample_count for Context3D sample count
...
This rounds the requested sample count down to a value
that's supported by the device.
2024-01-21 12:47:13 -05:00
TÖRÖK Attila
d153290fd6
nits: Fix a whole bunch of typos all over the place
2024-01-17 23:59:19 +01:00
Aaron Hill
b5f28f6caa
wgpu: Add support for Stage3D anisotropic filtering
...
Instead of binding every supported sampler combination
and selecting the correct index in our AGAL builder,
we now determine the correct sampler on the wgpu side,
and create one sampler binding per texture slot.
2024-01-16 18:08:28 -05:00
renovate[bot]
3c115238fd
fix(deps): update rust dependencies
2024-01-16 01:13:38 +01:00
renovate[bot]
e0a22b56ce
fix(deps): update wasm-bindgen
2024-01-15 17:24:02 -05:00
Aaron Hill
57f6963133
render: Implement PixelBender Operation::Select (renamed from Loop) ( #14503 )
2024-01-11 01:04:50 +00:00
renovate[bot]
a328deab11
fix(deps): update rust dependencies
2024-01-08 02:59:04 +01:00
Aaron Hill
47db84473a
avm2: Improve handling of Stage3D profile
...
We now validate the passed in profile, and return the selected profile
from 'Context3D.profile'. We don't yet alter the available
registers/textures based on the profile.
2024-01-07 22:34:33 +01:00
TÖRÖK Attila
217585daa8
chore: Delegate `[lints]` in `Cargo.toml` of all packages to the workspace
2024-01-05 11:28:19 +01:00
renovate[bot]
91d0520a43
fix(deps): update rust dependencies
2024-01-01 02:03:54 +01:00
TÖRÖK Attila
badac4176c
chore: Stop allowing previously buggy lint `clippy::extra_unused_type_parameters`
...
The corresponding Clippy issue was fixed long ago.
2023-12-25 19:20:53 -05:00
renovate[bot]
216a8f3b14
fix(deps): update rust dependencies
2023-12-25 10:09:07 +01:00
Aaron Hill
837143bb12
naga-agal: Fix handling of sampler overrides
...
After some testing, and looking at OpenFL, I believe I've
determined the correct behavior for AGAL sampling:
Each time a Context3D.setProgram or Context3D.setSamplerStateAt
call is made, the sampler config for the used texture slot(s)
is updated with the new wrapping/filter behavior. For setProgram,
this comes from all of the 'tex' opcodes used within the program.
However, when the 'ignoresampler' flag is set in a 'tex' opcode,
the setProgram call does *not* override the existing sampler config.
As a result, that program will sample with the behavior determined
by the most recent setSamplerStateAt or setProgram call involving
the used texture slot(s).
Previously, we were always overriding the opcode sampler config
with the values from Context3D.setSamplerStateAt. However, I didn't
realize that the order of the calls matter, so none of my tests ended
up observing the effect of 'ignoresampler'.
We now need to process AGAL bytecode twice - a quick initial
parse to determine the sampler configs (which need to be updated
when we call 'setProgram'), and a second time when to build the
Naga module (which needs to wait until we have the vertex attributes
available, which can be changed by ActionScript after setting
the program).
2023-12-15 22:05:30 -07:00
TÖRÖK Attila
bf9cf92af8
render/wgpu: Update wgpu to 0.18.0, naga to 0.14.1, naga_oil to 0.11.0, egui to 0.24.1
2023-12-14 01:36:42 +01:00
renovate[bot]
3a033f0f28
fix(deps): update rust dependencies
2023-12-11 15:51:12 +01:00
Aaron Hill
44c4080ae4
wgpu: Fix overly strict assertion for setVertexBufferAt
...
The offsets for bound attributes can overlap, which caused
us to compute the total size incorrectly. Fix this check
to take overlapping into account.
2023-12-08 23:53:39 +01:00
renovate[bot]
40b92e69f7
fix(deps): update rust dependencies
2023-12-05 21:08:16 +01:00
renovate[bot]
a0c33382bf
fix(deps): update wasm-bindgen
2023-12-04 12:08:22 +01:00
Aaron Hill
7289a8bd95
naga-agal: Zero-extend input vectors for cross-product
...
This matches the behavior of Flash Player
2023-11-30 01:15:21 +01:00
Aaron Hill
78c34c1be9
naga-agal: Fix using matrix opcodes with indirect source register
...
In indirect mode, We need to increment the indirect_offset value
to load subsequent matrix rows.
2023-11-30 00:59:47 +01:00
TÖRÖK Attila
ca25f82900
chore: Bump wasm-bindgen to 0.2.89 (0.2.88 got yanked)
2023-11-28 21:43:41 -05:00
renovate[bot]
6da223a875
fix(deps): update rust dependencies
2023-11-27 09:44:47 +01:00
renovate[bot]
2a83274c7f
fix(deps): update rust dependencies
2023-11-19 21:09:42 -05:00
Nathan Adams
f2b02acf44
chore: Appease clippy-beta
2023-11-13 20:26:50 +01:00
renovate[bot]
32c65e6460
fix(deps): update rust dependencies
2023-11-13 09:10:26 +01:00
Nathan Adams
f03b6307a8
core: Don't invalidate when setting filters to the same value
2023-11-10 22:24:45 +01:00
Aaron Hill
7110be920c
Suport uploading ATFTextureData::CompressedRawAlpha
...
Fortunately, this is very simple - we can just take
the DXT5 data and upload it directly to the wgpu texture.
2023-11-10 02:00:40 +01:00
Lord-McSweeney
249454885b
render: In `ShapeTessellator`, set `mask_index_count` to `None` in `flush_draw` before aborting
2023-11-09 20:22:25 +01:00
renovate[bot]
acadb2b2d3
fix(deps): update wasm-bindgen
2023-11-07 12:18:50 +01:00
renovate[bot]
1377a5b07b
fix(deps): update rust dependencies
2023-11-01 00:45:43 +01:00
Aaron Hill
46320c6238
wgpu: Round down Context3D sample count to nearest power of 2 ( #13762 )
2023-10-29 00:18:52 +00:00
Aaron Hill
b5097445e6
render: Add support for Context3DTextureFormat.COMPRESSED_ALPHA
...
This is our first non-rgba texture format (it uses Bc3RgbaUnorm).
ATF files store these textures in a very convoluted way - fortunately,
the 'dds2atf' tool is open-source, which allowed me to figure out
how to decode the texture back to a DXT5/DXT1 texture.
2023-10-23 11:18:27 -04:00
renovate[bot]
cd01bfe7d6
fix(deps): update rust dependencies
2023-10-23 02:55:11 +02:00
renovate[bot]
b427940431
fix(deps): update rust dependencies
2023-10-16 09:51:22 +02:00
TÖRÖK Attila
9506a66803
nit: Clean up Cargo.toml files slightly (remove unnecessary `version =` maps)
2023-10-15 22:39:18 +02:00
renovate[bot]
18796a67fe
fix(deps): update rust dependencies
2023-10-10 02:15:59 +02:00
Aaron Hill
2fd6cd4147
naga-agal: Stub anisotropic filters in opcodes
...
We had already stubbed these when set from ActionScript, but were
were panicking when they were selected directly in the AGAL bytecode.
2023-10-05 15:38:21 +02:00
Aaron Hill
c93020e729
wgpu: Correctly set format when rendering to Stage3D texture
...
This fixes a panic when trying to render a texture with a type
other than `TextureFormat::Rgba8Unorm`
2023-10-04 22:47:17 -04:00
Aaron Hill
6394b29962
nagal-agal: Fix detection of writing a scalar to a destination
...
We weren't covering all cases, which resulted in an attempt to
AccessIndex on a scalar, or write a scalar directly to a vector
local.
2023-10-05 02:12:28 +02:00
renovate[bot]
428e89af73
fix(deps): update rust dependencies
2023-10-04 19:19:51 -04:00
Aaron Hill
d32b19e350
render: Implement Context3DTextureFormat::RgbaHalfFloat
2023-10-03 18:05:46 -04:00
Aaron Hill
d76306d5ae
render: Fix incorrectly reading U24 in ATF parsing
...
We should be reading a big-endian U24.
2023-09-30 20:29:49 -04:00
Aaron Hill
d2f0787c2c
naga-agal: Fix Opcode::Rcp implementation
...
MathFunction::Inverse doesn't work on vectors.
2023-09-30 19:59:21 -04:00
Aaron Hill
2dcd783261
render: Disable wgpu unused shader output check when possible
...
Since wgpu hasn't yet released a version with this feature, I manually
backported it to the 0.17 branch.
This doesn't work on Windows (HLSL), but works on all other platforms.
2023-09-30 17:59:36 -04:00
Aaron Hill
742ee4052d
naga-pixelbender: Implement Opcode::LogicalAnd
2023-09-30 15:58:06 -04:00
Aaron Hill
ec7a8ac645
avm2: Add support for Stage3D bytearray/compressed textures ( #13180 )
2023-09-28 03:03:30 +00:00
renovate[bot]
7e4e4d4c5b
fix(deps): update rust dependencies
2023-09-25 11:14:39 +02:00
Aaron Hill
01b1e36ef5
wgpu: Rename DepthBuffer to StencilBuffer and stop providing depth_ops ( #13302 )
2023-09-24 20:19:14 +00:00
renovate[bot]
37e2c06034
fix(deps): update rust dependencies
2023-09-18 00:00:45 +02:00
Aaron Hill
1c0ae0b6d8
render: Bump wgpu to 0.17 and naga to 0.13
2023-09-07 18:49:59 -04:00
renovate[bot]
dabc2d56b9
fix(deps): update rust dependencies
2023-09-04 10:25:24 +02:00
Aaron Hill
ccf42c3614
naga-pixelbender: Stub out Opcode::Loop
...
Some experimentation with Pixel Bender Studio shows
that Opcode::Loop has a 23-byte payload. I haven't tried to
figure out how to interpet the payload yet, but we can now
skip over the opcode instead of bailing out entirely.
2023-08-30 17:36:31 -04:00
Aaron Hill
520045de46
wgpu: Disable Context3D.setRenderToTexture MSAA on WebGL
...
This is not supported under webgl, and results in a panic
"Tex storage 2D multisample is not supported" if we try to
do it.
2023-08-28 13:33:32 +02:00
renovate[bot]
4e75c3890a
fix(deps): update rust dependencies
2023-08-28 07:39:35 +02:00