Conversation
…ings Add RenderShaderFormat::METAL_IR: a small "PLIR" container (plume_metal_ir.h) holding the converted metallib, its entry point, and the resource list reflected by Apple's Metal Shader Converter (type, register space, slot, top-level argument buffer offset). METAL_IR graphics pipelines bind one top-level argument buffer per stage at kIRArgumentBufferBindPoint. Tables are built per draw from root constant buffer descriptors, push constants and descriptor sets, resolving each resource the same way as D3D12 (register space = descriptor set index, slot = range binding). Draws publish IRRuntimeDrawParams and index type at the draw-argument and uniform bind points so SV_VertexID/SV_InstanceID match D3D. SetMetalShaderConverterDescriptorSets() opts a device into shader-converter descriptor-set encoding; existing MSL/metallib paths are unchanged. Large tables and push constants use pooled shared upload chunks recycled after command buffer completion. Vendor the Apache-2.0 Metal Shader Converter runtime headers in contrib/metal-shaderconverter. Link Metal, QuartzCore, Foundation, CoreFoundation, IOKit and AppKit from the plume target itself; consumers previously only got them indirectly through SDL2. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Contributor
|
AI-generated contributions are not accepted, especially ones with Claude as the co-author. No copyright will be given to Anthropic in any of my projects. |
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Add RenderShaderFormat::METAL_IR: a small "PLIR" container (plume_metal_ir.h)
holding the converted metallib, its entry point, and the resource list
reflected by Apple's Metal Shader Converter (type, register space, slot,
top-level argument buffer offset).
METAL_IR graphics pipelines bind one top-level argument buffer per stage at
kIRArgumentBufferBindPoint. Tables are built per draw from root constant
buffer descriptors, push constants and descriptor sets, resolving each
resource the same way as D3D12 (register space = descriptor set index,
slot = range binding). Draws publish IRRuntimeDrawParams and index type at
the draw-argument and uniform bind points so SV_VertexID/SV_InstanceID
match D3D. SetMetalShaderConverterDescriptorSets() opts a device into
shader-converter descriptor-set encoding; existing MSL/metallib paths are
unchanged. Large tables and push constants use pooled shared upload chunks
recycled after command buffer completion.
Vendor the Apache-2.0 Metal Shader Converter runtime headers in
contrib/metal-shaderconverter.
Link Metal, QuartzCore, Foundation, CoreFoundation, IOKit and AppKit from
the plume target itself; consumers previously only got them indirectly
through SDL2.
Testing
main;-fsyntax-onlycompile of the changed sources on arm64 macOS againstmainpasses.🤖 Generated with Claude Code