Skip to content

Add tessellation support to DX/VK backends with accompanying SimpleTriangleTess.test#1224

Merged
EmilioLaiso merged 3 commits into
llvm:mainfrom
Traverse-Research:tessellation-test
May 28, 2026
Merged

Add tessellation support to DX/VK backends with accompanying SimpleTriangleTess.test#1224
EmilioLaiso merged 3 commits into
llvm:mainfrom
Traverse-Research:tessellation-test

Conversation

@EmilioLaiso

@EmilioLaiso EmilioLaiso commented May 26, 2026

Copy link
Copy Markdown
Collaborator

Adds Hull and Domain shader support, plus a PatchList primitive topology with per-call control-point count.
Wires the new stages on the DX12 and Vulkan backends.
Metal explicitly rejects them. Metal's tessellation model (HS as a compute kernel, DS as a [[patch(...)]]-tagged vertex function) doesn't neatly fit the HS/DS shape, so the path is intentionally left unimplemented.
Adds one end-to-end test, SimpleTriangleTess.test, exercising a VS → HS → DS → PS pipeline that renders the SimpleTriangle image test via tessellation.

@EmilioLaiso EmilioLaiso marked this pull request as ready for review May 26, 2026 13:53
Comment thread include/API/Device.h
Comment on lines +95 to +96
// Hull and Domain are independent optionals here; Pipeline.cpp enforces that
// they must be set as a pair (and only with PatchList topology).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If both must be set, there're not independent, but dependent or interdependent?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In-person: the here was referring to the two std::optional<>s below allowing them to be independent while they're not supposed to be independent. I would reword that to be more like the latter sentence to make the intent clear :)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the comment is fine.

PrimitiveTopology Topology = PrimitiveTopology::TriangleList;

// Set if Topology == PatchList. Validated in
// Pipeline.cpp::validatePipelineKind. Valid range is 1..32 (matches both

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only if you're making changes (resolving comments via Claude...) anyway:

Suggested change
// Pipeline.cpp::validatePipelineKind. Valid range is 1..32 (matches both
// Pipeline.cpp::validatePipelineKind(). Valid range is 1..32 (matches both

@EmilioLaiso EmilioLaiso merged commit 1affeef into llvm:main May 28, 2026
22 of 23 checks passed
@MarijnS95 MarijnS95 deleted the tessellation-test branch May 28, 2026 15:54
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