Autodesk: HgiPresent
Description of Change(s)
⚠️ This is a WIP PR
- Add
HgiPresent- For now only implement Vulkan presentation for window presentation
- Metal presentation will come later
- Make
HgiInteropan implementation ofHgiPresent - Update
HgiInteropto be more consistent about its composition parameters - Update
HdxPresentTaskto useHgiPresentinstead ofHgiInterop - Update
HdxTaskControllerandUsdImagingGLEngineto supportHgiPresent - Update all clients of
UsdImagingGLEngineto default toHgiInteroppresentation - Fix various symbol export issues I came across
Tested with:
- Windows / WIN32 / NVIDIA
- Windows / WIN32 / Lavapipe
- Linux / X11 / Lavapipe
- macOS / Metal / Lavapipe
Link to proposal (if applicable)
- N/A
Fixes Issue(s)
- N/A
Checklist
-
[x] I have created this PR based on the dev branch
-
[x] I have followed the coding conventions
-
[ ] I have added unit tests that exercise this functionality (Reference: testing guidelines)
-
[x] I have verified that all unit tests pass with the proposed changes
-
[x] I have submitted a signed Contributor License Agreement (Reference: Contributor License Agreement instructions)
/AzurePipelines run
/AzurePipelines run
Azure Pipelines could not run because the pipeline triggers exclude this branch/path.
We talked about this during the meeting as a potential followup, but it'd be great to add a test executing the window present codepath.
We talked about this during the meeting as a potential followup, but it'd be great to add a test executing the window present codepath.
I could try to implement a basic test for X11 specifically, as a proof-of-concept, and add other platform tests in another PR.
/AzurePipelines run
Azure Pipelines could not run because the pipeline triggers exclude this branch/path.
/AzurePipelines run
Azure Pipelines could not run because the pipeline triggers exclude this branch/path.
/AzurePipelines run
/AzurePipelines run
Hi @erikaharrison-adsk , This is a really interesting PR. Would you be able to provide a description of what HgiPresent is and aims to achieve?
I believe I understand it from the submitted code, but having a high level overview would help to loop in some other reviewers as well.
Hi @erikaharrison-adsk , This is a really interesting PR. Would you be able to provide a description of what HgiPresent is and aims to achieve?
I believe I understand it from the submitted code, but having a high level overview would help to loop in some other reviewers as well.
Hello @dgovil, the goal of this PR is to add native window presentation to HdxPresentTask, and a new Hgi level API to abstract over presentation. In it's most basic form, a UsdImagingGLEngine user can call engine->EnableWindowPresentation(window), where window is a handle to a window created and managed by the user, and expect that engine->Render() will present the final color AOV to the window without any additional intervention.
Thanks!