DXMT: validate render draw state before encoding#759
Conversation
Guard render draw commands before passing them to Metal. If pipeline creation failed or an indexed draw carries an invalid index buffer/range, skip the draw and report the condition instead of letting Objective-C Metal validation raise an exception from the encoder. Persist whether a render encoder has seen a valid pipeline state across command batches by attaching the state to the encoder object. Signed-off-by: Roberto Nibali <rnibali@gmail.com>
|
Thank you for your pull request and welcome to our community! To contribute, please sign the Oracle Contributor Agreement (OCA).
To sign the OCA, please create an Oracle account and sign the OCA in Oracle's Contributor Agreement Application. When signing the OCA, please provide your GitHub username. After signing the OCA and getting an OCA approval from Oracle, this PR will be automatically updated. If you are an Oracle employee, please make sure that you are a member of the main Oracle GitHub organization, and your membership in this organization is public. |
|
DXMT v0.80 audit update: Updating the vendored DXMT tree to v0.80 would not address this. DXMT v0.80 and current DXMT I opened the equivalent upstream DXMT issue and PR: |
|
Re-audit update: I withdrew the upstream DXMT issue/PR I had opened for this ( For VirtualBox, this remains potentially useful integration hardening only if tied to the VirtualBox/macOS-arm crash path we observed. It should not be presented as an accepted or currently pending upstream DXMT fix until we have a minimal DXMT-native repro. |
Summary
Validate winemetal render draw state before encoding draw calls into Metal.
This patch keeps track of whether the render encoder currently has a valid pipeline state and skips draw commands when no valid PSO is active. It also validates indexed draw buffer presence, type, offset/count range, and indirect draw argument buffer bounds before calling into Metal.
The intent is to keep invalid guest or failed pipeline state from becoming an Objective-C Metal validation exception and VM process crash.
Validation
git diff --checkkmk VBoxDxMton macOS/Arm using LLVM 15.0.7.Closes #756.
Signed-off-by: Roberto Nibali rnibali@gmail.com