feat: Descriptor / 有限 bindless 后端升级 - #2
Merged
Merged
Conversation
Keep the public BindingTable + Count + arrayIndex contract. DX12 views and interned samplers occupy CPU staging only; every table group owns a CPU mirror and GPU segment flushed on SetBindingTable. Vulkan pages pools by descriptor count and allows a 2x-waste superset share. Metal locks ViewPool capacity on first success and clears native slots on dispose. Co-authored-by: CGBull <1824339952@qq.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
RHI 公共面保持
BindingTable+Count+SetBindElement(..., arrayIndex),不新增 Heap/Pool/View 容器。DX12
CopyToShaderVisible。CreateSampler每次仍返回新包装对象,相同 descriptor 共享 CPU 槽并引用计数。Count=1)自有连续 CPU 镜像 + GPU 段;SetBindElement只写镜像并合并 dirty;SetBindingTable/Bind*在SetRootDescriptorTable前一次CopyDescriptors。Vulkan
SetsPerPage按 descriptor 总数分档 128 / 32 / 4 / 1。Equals,否则允许逐项超集且总量浪费 ≤ 2×;空页回收规则保持。Metal
SetTextureView(nil)清 native 槽再还软件 index。HasDescriptorArray。验证
TODO(UNVERIFIED)。AvailableDescriptorCount不再下降)需在 Windows/macOS matching host 复验。未提交
stack.local.props,隔离构建输出已删除。