Optimization of the render pipeline cache access on WebGPU #5490
+165
−47
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.
The initial render pipeline cache was a string concatenation based and its performance was not ideal due to longer strings getting constructed / compared for each draw call.
This PR switches the unique ID from string to an array of numbers, which gets hashed to a single number for the cache lookup. To handle the hash collisions (which are pretty much non existing when testing with less than 100k unique arrays), the array compare is used as well.
Performance improvement in Hierarchy engine examples with over 5k draw calls: