Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Helix Toolkit from 2.11 to 2.15 #11658

Merged
merged 4 commits into from
May 9, 2021

Conversation

saintentropy
Copy link
Contributor

@saintentropy saintentropy commented Apr 30, 2021

Purpose

This PR is to update the Helix Toolkit (and by association the Cyotek.Drawing.BitmapFont dependency) from version 2.11 to version 2.15. The purpose of this PR is to address a memory optimization related to the #11395 PR (Generating a single render package per node). Specifically the helix-toolkit/helix-toolkit#1494 PR modifies the behavior of the VertexArrayBuffer which was being retained in memory as a sparse array based on the largest size mesh to be rendered in the session. In 2.15 this buffer is not pinned to the largest allocation size in session.

As a point of interest. This Helix PR fix was triggered due to the issue filed by @aparajit-pratap. helix-toolkit/helix-toolkit#1449

Declarations

Check these if you believe they are true

  • The codebase is in a better state after this PR
  • Is documented according to the standards
  • The level of testing this PR includes is appropriate
  • User facing strings, if any, are extracted into *.resx files
  • All tests pass using the self-service CI.
  • Snapshot of UI changes, if any.
  • Changes to the API follow Semantic Versioning and are documented in the API Changes document.
  • This PR modifies some build requirements and the readme is updated

Reviewers

@aparajit-pratap @mmisol

FYIs

@mjkkirschner

@mjkkirschner
Copy link
Member

mjkkirschner commented Apr 30, 2021

I must be misunderstanding that PR - because it still looks like the behavior is to create a buffer(vertexCount) ?

Also since the default for isTransient is false, we're not taking advantage of the buffer being cleared - and if we were, then hit testing would be broken it seems.

@saintentropy
Copy link
Contributor Author

@mjkkirschner for our purposes the new ThreadBufferManager is what affects us. Here are the relevant changes to the MeshBufferModel and LineBufferModel:

image

and
image

The original local vertexArrayBuffer was always retained and would just keeping getting larger based on the largest array of the session. Now per their documentation -> per their notes /// If requested size is larger than this value, buffer will be temporary instead of being retained for reuse.

@saintentropy
Copy link
Contributor Author

The isTransient optimization can be looked at in the future but not related to the memory issue we were addressing

@saintentropy saintentropy removed the WIP label May 3, 2021
@saintentropy saintentropy changed the title WIP: Update Helix Toolkit from 2.11 to 2.15 Update Helix Toolkit from 2.11 to 2.15 May 3, 2021
@mjkkirschner mjkkirschner self-requested a review May 5, 2021 17:19
@mjkkirschner
Copy link
Member

It looks good to me, but it's probably good to run the view comparison tests.

@saintentropy
Copy link
Contributor Author

Image comparisons are pass @mjkkirschner @aparajit-pratap

@saintentropy saintentropy merged commit 62b131f into DynamoDS:master May 9, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants