Honor native cube render-target allocation and face selection - #1885
bkaradzic-microsoft wants to merge 5 commits into
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
The new GPU test does not honor the existing SKIP_RENDER_TESTS configuration used for D3D12.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Updates native texture and framebuffer handling to support cube render targets and face selection.
Changes:
- Honors
isCubeduring texture initialization. - Passes and validates cube face layers.
- Adds GPU regression coverage and CMake registration.
File summaries
| File | Description |
|---|---|
NativeEngine.h |
Extends framebuffer implementation signature with layer support. |
NativeEngine.cpp |
Allocates cube textures and attaches selected faces. |
Tests.NativeEngine.CubeRenderTargets.cpp |
Adds cube-face clearing and readback tests. |
CMakeLists.txt |
Registers the new test source. |
Review details
- Files reviewed: 4/4 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
Warning
Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated 7 comments.
|
CI is currently blocked by an inconsistent GitHub mergeability result, not a reproduced source conflict.
The cube validation changes already pass repeated D3D11/Chakra and Vulkan/JSC runs. No code, dependency, fixture, or tolerance was changed for the refresh. I am leaving the PR open on the same base and recording the hosted mergeability/CI blocker rather than repeatedly rewriting or republishing the branch. |
969d094 to
0ccd313
Compare
|
Fixed the post-rebase Windows sanitizer-job failure in fd1b972. This was a scene-construction race, not a sanitizer finding or cube-render-target failure: The existing fixture |
Consume the isCube and face arguments already supplied by released Babylon.js. Keep 2D and MRT defaults unchanged and reject out-of-range cube faces before bgfx attachment validation. Cover independent colors on all six faces through GPU readback, legacy 2D defaults, and invalid face rejection. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 60c2ec68-6de1-445d-9fc9-b699db737eae
Skip the GPU regression when SKIP_RENDER_TESTS is set, matching the existing D3D12 test configuration while retaining supported backend coverage. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 60c2ec68-6de1-445d-9fc9-b699db737eae
Reject unequal cube dimensions without comparing truncated sizes. Require integer cube faces in [0, 5] and layer zero for 2D or depth-only targets, including rejection of fractional, non-finite and wrapping numeric inputs. Extend the six-face readback regression with invalid-input coverage and a valid default depth-only framebuffer control. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 60c2ec68-6de1-445d-9fc9-b699db737eae
GitHub reports this branch as conflicting despite its compare API reporting three commits ahead and zero behind the unchanged bb01e28 base. A local merge-tree produces exactly the current head tree without conflicts. The same-base PR metadata refresh did not restore CI. Republish an unchanged tree under a new head to trigger mergeability and CI recomputation without changing code, rewriting history, or altering the base. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 60c2ec68-6de1-445d-9fc9-b699db737eae
The analytic-lights scene returns before ImportMeshAsync's continuation creates its spheres and materials, allowing validation to capture only the clear color. Use the existing fixture replacement to return that promise and wait for scene construction before rendering. Preserve the reference image, frame budget, thresholds, and test coverage. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 48fa7ec8-0cf6-48a0-b836-10b7ace38c1a
fd1b972 to
97a7e32
Compare
Summary
isCubeargument ininitializeTexture, allocating a cube rather than a 2D texture.createFrameBufferinto the shared attachment implementation. Keep the default layer at zero for ordinary 2D targets and MRTs.Independence
Rebased onto
master(2a9dc944), independently of the other rendering PRs. Published Babylon.js 9.21.2 already sends the cube and face arguments; Native currently ignores them. No Babylon.js, protocol, dependency-pin, fixture, or tolerance changes.This is deliberately limited to cube allocation and face attachment. It does not include newer volume/mip attachment APIs or claim to fix point-light projection/orientation issues in JavaScript.
Validation
Windows x64 / D3D11 / Chakra / RelWithDebInfo, with pinned upstream dependencies: the six-face GPU regression and legacy 2D controls pass.