profile
viewpoint
Jasper Bekkers Jasper-Bekkers http://jasperbekkers.nl CEO at Traverse Research. Rendering engineer at Embark Studios. Previously at DICE (Frostbite), OTOY and EA/SEED DMs open: https://twitter.com/JasperBekker

Gekkio/imgui-rs 1051

Rust bindings for Dear ImGui

gfx-rs/rspirv 309

Rust implementation of SPIR-V module processing functionalities

Jasper-Bekkers/krryn-ui 2

UI framework harvested from krryn project and updated slightly

Jasper-Bekkers/voxelize-rs 2

Rust voxelization library

Jasper-Bekkers/settings 1

Backups / storage of settings files

PullRequestReviewEvent

startedchristopherbatty/SDFGen

started time in 7 days

startedBinomialLLC/bc7e

started time in 9 days

push eventTraverse-Research/hassle-rs

Jasper Bekkers

commit sha a0ca5f6ee555b8d862ae2998ffc8e8622a30b55e

macOS support (#8) * Add macOS support

view details

push time in 11 days

PR merged Traverse-Research/hassle-rs

macOS support

It's quite early days still, but this helps to get everything moving.

+12 -3

1 comment

3 changed files

Jasper-Bekkers

pr closed time in 11 days

startedsharksforarms/deku

started time in 11 days

pull request commentretep998/winapi-rs

Update d3d12 to SDK 10.0.18362.0

Since this is marked as waiting on review, is there anything we can do to help review this? We'd love to use these changes in production. Potentially @DBouma and I can take a look.

bsekura

comment created time in 13 days

issue commentgfx-rs/rspirv

`Assemble::assemble(&self) -> Vec<u32>` always allocate heap memory

I think #165 fixes this.

liigo

comment created time in 13 days

pull request commentgfx-rs/rspirv

[WIP] Structured items

This PR has been stale for about a year, mind if we close it?

kvark

comment created time in 13 days

Pull request review commentgfx-rs/rspirv

Perf: Don't allocate as much in Decoder::string

 impl<'a> Decoder<'a> {     /// null character (`\0`), or reaching the limit or end of the stream     /// and erroring out.     pub fn string(&mut self) -> Result<String> {-        let start_offset = self.offset;-        let mut bytes = vec![];-        loop {-            let word = self.word()?;-            bytes.extend(&word.to_le_bytes());-            if bytes.last() == Some(&0) {-                break;-            }-        }-        while !bytes.is_empty() && bytes.last() == Some(&0) {-            bytes.pop();+        // If we have a limit, then don't search further than we need to.+        let slice = match self.limit {+            Some(limit) => &self.bytes[self.offset..(self.offset + limit * WORD_NUM_BYTES)],+            None => &self.bytes[self.offset..],+        };+        // Find the null terminator.+        let first_null_byte =+            slice+                .iter()+                .position(|&c| c == 0)+                .ok_or_else(|| match self.limit {+                    Some(_) => Error::LimitReached(self.offset + slice.len()),+                    None => Error::StreamExpected(self.offset),

Shouldn't this also be self.offset + slice.len() since previously this would only happen scanning one of the last words in the slice?

khyperia

comment created time in 13 days

PullRequestReviewEvent
PullRequestReviewEvent

issue commentKhronosGroup/SPIRV-Tools

spirv-opt ssa-rewrite produces code that fails the validator

@dnovillo you did the original implementation, maybe you can provide us with some clues how to fix this?

khyperia

comment created time in 14 days

push eventTraverse-Research/rspirv-reflect

Marijn Suijten

commit sha c6a8917c44ae753ceed0ee1e914327a6150ddae4

tests: Validate simple bindings extracted from a HLSL shader

view details

Marijn Suijten

commit sha 270d216f3ec2ead85b61e73de16ae9aa2a7a6ccc

tests: Use PartialEq on DescriptorInfo

view details

Marijn Suijten

commit sha bcc314bb35cfa1d986bd8420163f77b7a674e4e1

GH Actions: Run cargo test

view details

Marijn Suijten

commit sha 58913b51f443d258e7130bf72db7d5ceb76a0214

GH Actions: Run check job on Windows as well

view details

Jasper Bekkers

commit sha 594a7d7723d02d1342e2f826df4124f44932b2fd

Merge pull request #3 from Traverse-Research/tests Add test cases for some simple descriptor types

view details

push time in 18 days

PR merged Traverse-Research/rspirv-reflect

Add test cases for some simple descriptor types

Include simple test cases to validate common HLSL types.

This adds an (optional) dependency on hassle-rs and dxcompiler.dll to compile the test shader; by default (cargo test) it is unused, and will only be (re)compiled with cargo test --features test-compile-shaders. Unfortunately cargo doesn't support optional dependencies in dev-dependencies, nor is there a dev-features section.

+173 -3

2 comments

6 changed files

MarijnS95

pr closed time in 18 days

startedscality/elmerfs

started time in 19 days

pull request commentgfx-rs/rspirv

impl trait is cooler than generics, use it

I think this is fine - always good to have productivity improvements.

Would be good to get some extra eyes on since this is indeed a backcompat breaking change.

khyperia

comment created time in a month

PullRequestReviewEvent

startedkeijiro/KinoBloom

started time in a month

PR opened termhn/ultraviolet

Add CI
+60 -0

0 comment

1 changed file

pr created time in a month

push eventTraverse-Research/ultraviolet

Jasper Bekkers

commit sha 7093bdfc4e5297ca1f89807c71ed97dbdd3dde69

Add CI

view details

push time in a month

create barnchTraverse-Research/ultraviolet

branch : ci

created branch time in a month

push eventTraverse-Research/ultraviolet

Jasper Bekkers

commit sha e49af088bce30f225b987d8a7eed32522519380d

Remove `mul_add` calls in several places (#67) * Vec2, 3, 4 * mat.rs * int.rs * bivec.rs * interp.rs

view details

Gray Olson

commit sha 5281a77c1949498d6f6d8fe223d9b00bdf5533e2

optimize normalize slightly and update changelog

view details

push time in a month

pull request commenttermhn/ultraviolet

Remove `mul_add` calls in a lot of places

Addressed all feedback :-)

Jasper-Bekkers

comment created time in a month

push eventTraverse-Research/ultraviolet

Jasper Bekkers

commit sha a60c5ae8c6938c6f1f5a7d8ff43fbc16e1d4e860

Add back explicit mul-add where requested

view details

Jasper Bekkers

commit sha 6ba5ace44c3c1a3978734692f945b648600514f0

Remove double neg

view details

push time in a month

PR opened termhn/ultraviolet

Remove `mul_add` calls in a lot of places

Since mul_add only gets turned into FMA3 in haswell and up, and because typically FMA3 doesn't provide a lot of speedups even on newer machines, I've replaced a lot of calls to mul_add.

Similarly, rustc doesn't assume that FMA3 is available by default (it's quite pessimistic in it's world view) by default these calls end up in libc's fma which is quite a slowdown.

Was planning on doing these by regex but ran into a lot of issues, so this batch has manually replaced them.

+112 -112

0 comment

7 changed files

pr created time in a month

create barnchTraverse-Research/ultraviolet

branch : fma-remove

created branch time in a month

push eventgfx-rs/rspirv

Marijn Suijten

commit sha 17c0f123a82500baf32564ec30de86d1dbca8241

binary: parser: Make ConsumerError contain dyn Error + Send (#166) In one of our projects we propagate errors out of a thread using thiserror to nest them recursively. The enum `State` ends up in that error type too, hence needs to be Send. Fortunately only StringError seems to be stored in this field currently.

view details

push time in a month

PR merged gfx-rs/rspirv

binary: parser: Make ConsumerError contain dyn Error + Send

In one of our projects we propagate errors out of a thread using thiserror to nest them recursively. The enum State ends up in that error type too, hence needs to be Send. Fortunately only StringError seems to be stored in this field currently.

+2 -2

0 comment

1 changed file

MarijnS95

pr closed time in a month

PullRequestReviewEvent

push eventgfx-rs/rspirv

Jasper Bekkers

commit sha 1addc7d33ae1460ffa683e2e6311e466ac876c23

Remove a lot of `vec!` macro invocations from Assemble instead opting to push to a Vec to save some heap traffic (#165)

view details

push time in a month

PR merged gfx-rs/rspirv

Remove a lot of `vec!` macro invocations from Assemble

This adds a assemble_into which just produces SPIR-V into a Vec<u32> instead of making lots and lots of new ones, this should reduce the assemble functions heap traffic quite a bit. This should address #96 and help me out at the same time.

+95 -81

1 comment

2 changed files

Jasper-Bekkers

pr closed time in a month

startedddiakopoulos/libnyquist

started time in a month

pull request commentgfx-rs/rspirv

Remove a lot of `vec!` macro invocations from Assemble

I thought of that - but io::Write (or io::Cursor) mostly operates on bytes so we'd just be doing a bunch of back and forth between u32 and u8's. Since SPIR-V is naturally expressed as u32's, this seemed like the easier / more ergonomic option.

Jasper-Bekkers

comment created time in a month

PR opened gfx-rs/rspirv

Remove a lot of `vec!` macro invocations from Assemble

This adds a assemble_into which just produces SPIR-V into a Vec<u32> instead of making lots and lots of new ones, this should reduce the assemble functions heap traffic quite a bit. This should address #96 and help me out at the same time.

+95 -81

0 comment

2 changed files

pr created time in a month

created taggfx-rs/rspirv

tagv0.7.0

Rust implementation of SPIR-V module processing functionalities

created time in a month

create barnchgfx-rs/rspirv

branch : assemble_into_vec

created branch time in a month

startedTom94/practical-path-guiding

started time in a month

PublicEvent

startedericjang/awesome-graphics

started time in a month

startedmattdesl/graphics-resources

started time in a month

created tagTraverse-Research/rspirv-reflect

tagv0.1.2

Minimal SPIR-V reflection library.

created time in a month

created tagTraverse-Research/rspirv-reflect

tagv0.1.3

Minimal SPIR-V reflection library.

created time in a month

push eventTraverse-Research/rspirv-reflect

Jasper Bekkers

commit sha 6d6c18ead8d56918004bfc112f007831cb0f12fc

Bump patch version after fix

view details

push time in a month

push eventTraverse-Research/rspirv-reflect

Marijn Suijten

commit sha 41e5555a89f7639fe78942da1a9219d971904bdb

Not all decoration annotations have a third operand Annotations such as `[IdRef(x), Decoration(NonWritable)]` will match the `if let Decoration` clause and attempt to unpack the third operand as `LiteralInt32` even if it doesn't exist, resulting in an `index out of bounds` panic.

view details

Jasper Bekkers

commit sha 33b9ae15c1407625739606b22b79c39e81881ca2

Merge pull request #4 from Traverse-Research/fix-out-of-bounds-panic Not all decoration annotations have a third operand

view details

push time in a month

PR merged Traverse-Research/rspirv-reflect

Not all decoration annotations have a third operand

Annotations such as [IdRef(x), Decoration(NonWritable)] will match the if let Decoration clause and attempt to unpack the third operand as LiteralInt32 even if it doesn't exist, resulting in an index out of bounds panic.

+15 -12

0 comment

1 changed file

MarijnS95

pr closed time in a month

startedazhirnov/FrameGraph

started time in a month

startedemoon/evfs

started time in a month

startedflutter-rs/flutter-rs

started time in a month

pull request commentbytecodealliance/wasmtime

SPIR-V backend scaffolding

Closing this issue because we chose to peruse the same goal through different means.

Jasper-Bekkers

comment created time in a month

PR closed bytecodealliance/wasmtime

SPIR-V backend scaffolding cranelift cranelift:area:machinst cranelift:meta

As discussed on Zulip, we're starting to ramp up our efforts on providing the SPIR-V backend, so I thought it might be a good time to provide some insights into the project to the wasmtime team.

I figure it's easier for everybody if we engage early on rather then submit a giant PR in the end, this way we can take it together and one step at a time.

We'll most likely have some changes incoming for internal cranelift datastructures etc to be able to deal with SPIR-V properly but they're not part of this PR yet, we'll try and contribute those as smaller improvements.

Right now the PR is a draft because we'd like to get initial feedback on our approach, because it still contains some debug code and because I need to rebase this on top of master.

+939 -69

5 comments

18 changed files

Jasper-Bekkers

pr closed time in a month

PullRequestReviewEvent
PullRequestReviewEvent

push eventgfx-rs/rspirv

Ashley Hauck

commit sha 7a36c2f16749b8e7ab76b3b51be8d2b22d33d98d

Add support for 64-bit OpSwitch (#161) * Add support for 64-bit OpSwitch SR support is omitted for now. * Update some comments from PR feedback

view details

push time in 2 months

PR merged gfx-rs/rspirv

Add support for 64-bit OpSwitch

SR support is omitted for now.

I'm not 100% the parser is fully working, I couldn't figure out how to write tests - but the emitter works (which is the easy side).

+20 -20

0 comment

7 changed files

khyperia

pr closed time in 2 months

Pull request review commentgfx-rs/rspirv

Add support for 64-bit OpSwitch

 pub fn gen_operand_parse_methods(grammar: &Vec<structs::OperandKind>) -> TokenSt     // Logic operands that expand to concrete operand pairs,     // that is, those operand kinds with 'Pair' name prefix.     // We only have three cases. So hard code it.-    let pair_kinds = vec![-        ("LiteralInteger", "IdRef"),-        ("IdRef", "LiteralInteger"),-        ("IdRef", "IdRef"),-    ];+    let pair_kinds = vec![("IdRef", "LiteralInteger"), ("IdRef", "IdRef")];

Comment should be updated.

khyperia

comment created time in 2 months

PullRequestReviewEvent
PullRequestReviewEvent

pull request commentrust-gamedev/rust-gamedev.github.io

Newsletter 13: A little section about rspirv-reflect

Thanks for the feedback @17cupsofcoffee, does conform to the guidelines better?

Jasper-Bekkers

comment created time in 2 months

push eventTraverse-Research/rust-gamedev.github.io

Jasper Bekkers

commit sha 17eadd7ac94bd0319f8f56a0104ba7e71900ef91

Update index.md

view details

push time in 2 months

push eventgfx-rs/rspirv

Ashley Hauck

commit sha 2e8ef6938c641bf05cdf4c95a2f9dc682d899ada

Move builder's version into the module, and add module_mut (#159)

view details

push time in 2 months

PR merged gfx-rs/rspirv

Move builder's version into the module, and add module_mut

Clients may want to do some truly bizarre shenanigans to the module being built, doing some things that definitely shouldn't be "official" methods in rspirv. So, allow an "escape hatch" to let the client write their own weird methods to directly modify the module.

(The bizarre client is me.)

Also move the builder's version field into the module being built, it was bothering me that it was duplicated.

+19 -11

0 comment

1 changed file

khyperia

pr closed time in 2 months

PullRequestReviewEvent

delete branch gfx-rs/rspirv

delete branch : iter-methods

delete time in 2 months

push eventgfx-rs/rspirv

Jasper Bekkers

commit sha c7be163bbd10b57b1b134efd990076cbcb9970df

Add methods for iterating over all instructions in the module (#158) * Add methods for iterating over all instructions in the module

view details

push time in 2 months

PR merged gfx-rs/rspirv

Add methods for iterating over all instructions in the module

Fixes incorrect doc comments left over from previous refactor in https://github.com/gfx-rs/rspirv/commit/a4d9cdd5a21a774051e30cba13da6612396859a1. Added a few more helper methods to iterate over / list all Instruction's in a `Module.

+64 -3

0 comment

1 changed file

Jasper-Bekkers

pr closed time in 2 months

Pull request review commentgfx-rs/rspirv

Add methods for iterating over all instructions in the module

 impl Module {             .chain(&self.annotations)             .chain(&self.types_global_values)     }++    /// Returns a mut iterator over all global instructions.+    pub fn global_inst_iter_mut(&mut self) -> impl Iterator<Item = &mut Instruction> {+        self.capabilities+            .iter_mut()+            .chain(&mut self.extensions)+            .chain(&mut self.ext_inst_imports)+            .chain(&mut self.memory_model)+            .chain(&mut self.entry_points)+            .chain(&mut self.execution_modes)+            .chain(&mut self.debugs)+            .chain(&mut self.annotations)+            .chain(&mut self.types_global_values)+    }++    /// Returns a iterator over all instructions.+    pub fn all_inst_iter(&self) -> impl Iterator<Item = &Instruction> {+        self.capabilities+            .iter()+            .chain(&self.extensions)+            .chain(&self.ext_inst_imports)+            .chain(&self.memory_model)+            .chain(&self.entry_points)+            .chain(&self.execution_modes)+            .chain(&self.debugs)+            .chain(&self.annotations)+            .chain(&self.types_global_values)

I kept it duplicated because I think it's easier to keep them in sync that way - rather then having to have a special mut version.

Jasper-Bekkers

comment created time in 2 months

PullRequestReviewEvent

Pull request review commentgfx-rs/rspirv

Add methods for iterating over all instructions in the module

 impl Module {             .chain(&self.annotations)             .chain(&self.types_global_values)     }++    /// Returns a mut iterator over all global instructions.+    pub fn global_inst_iter_mut(&mut self) -> impl Iterator<Item = &mut Instruction> {+        self.capabilities+            .iter_mut()+            .chain(&mut self.extensions)+            .chain(&mut self.ext_inst_imports)+            .chain(&mut self.memory_model)+            .chain(&mut self.entry_points)+            .chain(&mut self.execution_modes)+            .chain(&mut self.debugs)+            .chain(&mut self.annotations)+            .chain(&mut self.types_global_values)+    }++    /// Returns a iterator over all instructions.+    pub fn all_inst_iter(&self) -> impl Iterator<Item = &Instruction> {+        self.capabilities+            .iter()+            .chain(&self.extensions)+            .chain(&self.ext_inst_imports)+            .chain(&self.memory_model)+            .chain(&self.entry_points)+            .chain(&self.execution_modes)+            .chain(&self.debugs)+            .chain(&self.annotations)+            .chain(&self.types_global_values)+            .chain(self.functions.iter().flat_map(|f| {+                f.def+                    .iter()+                    .chain(f.parameters.iter())+                    .chain(+                        f.blocks+                            .iter()+                            .flat_map(|b| b.label.iter().chain(b.instructions.iter())),

Yeah it's nice Option can do that, but it's not always intuitive.

Jasper-Bekkers

comment created time in 2 months

PullRequestReviewEvent

push eventgfx-rs/rspirv

Jasper Bekkers

commit sha 1e81a22ce00d734f46280cefeb4be0520f1b8077

Previous cargo fmt was run with different version of fmt then CI

view details

push time in 2 months

PR opened gfx-rs/rspirv

Reviewers
Add methods for iterating over all instructions in the module

Fixes incorrect doc comments left over from previous refactor in https://github.com/gfx-rs/rspirv/commit/a4d9cdd5a21a774051e30cba13da6612396859a1. Added a few more helper methods to iterate over / list all Instruction's in a `Module.

+68 -5

0 comment

3 changed files

pr created time in 2 months

create barnchgfx-rs/rspirv

branch : iter-methods

created branch time in 2 months

pull request commentTraverse-Research/hassle-rs

macOS support

Depends on https://github.com/microsoft/DirectXShaderCompiler/pull/3062

Jasper-Bekkers

comment created time in 2 months

push eventTraverse-Research/hassle-rs

Jasper Bekkers

commit sha 1faee143b1d21c2ad8299bd32e00836bc53434e1

Test linux

view details

push time in 2 months

PR opened Traverse-Research/hassle-rs

macOS support

It's quite early days still, but this helps to get everything moving.

+11 -2

0 comment

3 changed files

pr created time in 2 months

push eventTraverse-Research/hassle-rs

Jasper Bekkers

commit sha 2047b8a312c96a76044d1e53a7f6e6a192ed5043

README.md

view details

push time in 2 months

create barnchTraverse-Research/hassle-rs

branch : macos-support

created branch time in 2 months

push eventgfx-rs/rspirv

Ashley Hauck

commit sha 7b22c0ca9f1ebd4229b9a1062ab3dfe582c62091

Fix typo in type_struct_id (#157)

view details

push time in 2 months

PR merged gfx-rs/rspirv

Reviewers
Fix typo in type_struct_id

Problem was introduced in https://github.com/gfx-rs/rspirv/pull/156 when copying the type_pointer method and missing this.

+1 -1

0 comment

1 changed file

khyperia

pr closed time in 2 months

push eventTraverse-Research/rspirv-reflect

Jasper Bekkers

commit sha 5186c422ca5608c0a50b7223ada1756c55ea3c7a

Added list of alternative libraries

view details

push time in 2 months

startedinteract-rs/interact

started time in 2 months

startedAudranDoublet/opr

started time in 2 months

PR opened rust-gamedev/rust-gamedev.github.io

Newsletter 13: A little section about rspirv-reflect

As mentioned in #232, I wrote a small section on rspirv-reflect.

+25 -0

0 comment

2 changed files

pr created time in 2 months

push eventTraverse-Research/rust-gamedev.github.io

Jasper Bekkers

commit sha 3eaa3e5cad2b1f56497813947317beb7121353b7

Add banner image

view details

push time in 2 months

push eventTraverse-Research/rust-gamedev.github.io

Jasper Bekkers

commit sha c92b7af12e3d980e991db5f759e0a1f94109bcff

Newsletter 13: rpsirv-reflect

view details

push time in 2 months

issue commentrust-gamedev/rust-gamedev.github.io

Newsletter 13

I just saw I got mentioned here for rspirv-reflect, I can definitely write something about that, thanks!

ozkriff

comment created time in 2 months

startedWAVM/WAVM

started time in 2 months

push eventgfx-rs/rspirv

Ashley Hauck

commit sha 91cd33f65aa2195da40f77d2a543e8e7f0661b01

Add type_struct_id function (#156) The type_struct function always dedupes, which is bad if the user wants to use OpMemberDecorate - the same struct might need to be emitted multiple times, with different OpMemberDecorates.

view details

push time in 2 months

PR merged gfx-rs/rspirv

Add type_struct_id function

The type_struct function always dedupes, which is bad if the user wants to use OpMemberDecorate - the same struct might need to be emitted multiple times, with different OpMemberDecorates.

An alternative is to introduce a breaking change for type_struct to add the result_id parameter. Let me know if that's preferable.

+31 -0

0 comment

1 changed file

khyperia

pr closed time in 2 months

PullRequestReviewEvent
PullRequestReviewEvent

push eventTraverse-Research/rspirv-reflect

Jasper Bekkers

commit sha 1896564a0028bdc0e6bce971ed133628207ccedf

Bump patch version

view details

push time in 2 months

push eventTraverse-Research/rspirv-reflect

Jasper Bekkers

commit sha 25d70d72595a2165ee0e9faf3dc0fd7b41d3773c

Update readme

view details

push time in 2 months

push eventTraverse-Research/rspirv-reflect

Jasper Bekkers

commit sha e4c3f8e2af54fbe13e2c43bb82331e0cce0f52a2

Typo

view details

push time in 2 months

push eventTraverse-Research/rspirv-reflect

Jasper Bekkers

commit sha 7d384e885bd4429e8ddc9b0547962af07146be58

Update README.md

view details

push time in 2 months

push eventgfx-rs/rspirv

Ashley Hauck

commit sha 16265b8b61b71872bc0d7a1dac916070ac3c7611

Make ZeroOrMore take Iterator instead of AsRef<[T]> (#149) * ZeroOrMore takes Iterator instead of AsRef<[T]> This is useful if the user has an iterator instead of a slice/vec, it saves an allocation.

view details

push time in 2 months

PR merged gfx-rs/rspirv

Make ZeroOrMore take Iterator instead of AsRef<[T]>

This is useful if the user has an iterator instead of a slice/vec, it saves an allocation.

I think this is a breaking change due to ref differences, not sure if we're okay with that.

(For review, the only file changed is dr.rs, the rest are generated)

+223 -283

3 comments

6 changed files

khyperia

pr closed time in 2 months

more