docs: S4 packet — particles take the retail DrawMesh branch table; #459 names the unconsumed-attribute candidates
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
17315f0e7d
commit
6435655d73
2 changed files with 11 additions and 5 deletions
|
|
@ -120,7 +120,7 @@ may be force-stopped after two failed graceful closes, and ACE then holds the se
|
|||
|
||||
## #459 — Five fragment shaders declare SPIR-V `DemoteToHelperInvocation` without the device feature (validation error at every launch)
|
||||
|
||||
**Status:** RESOLVED 2026-09-03 at `e33fd2472` — `shaderDemoteToHelperInvocation` is now read through the Vulkan 1.3 feature chain, enabled at device creation, and gated as required in `VulkanCapabilityRecord` (236 Vulkan tests + the hermetic lane green). Proof: the four-pose validation launch at that commit (`logs/selfgate-20260903-171009-fix459-validation`, `logs/vk-validation-459.log`) reports ZERO validation errors; only the ten pre-existing `WARNING-Shader-OutputNotConsumed` performance warnings remain (one pipeline declares a vertex attribute at location 1 its shader never reads — still to be identified; harmless). Found 2026-09-03 by the first Vulkan-validation-layer self-gate of Campaign OVERHAUL v2 (S3 chunk 4 fix round 2's gate; the layer was forced through the loader with `VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation`, since `ACDREAM_DEVTOOLS=1` only adds the debug-utils extension — `VulkanInterop.cs:182-183` creates the instance with `EnabledLayerCount = 0`).
|
||||
**Status:** RESOLVED 2026-09-03 at `e33fd2472` — `shaderDemoteToHelperInvocation` is now read through the Vulkan 1.3 feature chain, enabled at device creation, and gated as required in `VulkanCapabilityRecord` (236 Vulkan tests + the hermetic lane green). Proof: the four-pose validation launch at that commit (`logs/selfgate-20260903-171009-fix459-validation`, `logs/vk-validation-459.log`) reports ZERO validation errors; only the ten pre-existing `WARNING-Shader-OutputNotConsumed` performance warnings remain (one pipeline declares a vertex attribute at location 1 its shader never reads — harmless; `spirv-dis` narrows the module to a vertex shader with a single `Location 0` input that is built into ~10 pipeline variants: `portal_depth.vert` (the seal/punch variants) or the `directional_shadow_terrain`/`_world_opaque` pair — confirm by matching the reported `VkShaderModule` handle against the creation order when someone trims that pipeline's vertex-input state). Found 2026-09-03 by the first Vulkan-validation-layer self-gate of Campaign OVERHAUL v2 (S3 chunk 4 fix round 2's gate; the layer was forced through the loader with `VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation`, since `ACDREAM_DEVTOOLS=1` only adds the debug-utils extension — `VulkanInterop.cs:182-183` creates the instance with `EnabledLayerCount = 0`).
|
||||
**Severity:** LOW today (every driver we run on accepts it), MEDIUM by the spec (undefined behavior: `VUID-VkShaderModuleCreateInfo-pCode-08740`)
|
||||
**Component:** `tools/ShaderCompiler` target environment / `VulkanGpuDevice` feature chain
|
||||
|
||||
|
|
|
|||
|
|
@ -132,10 +132,16 @@ seal/punch color-state row from S4-c1 kept or retired per its decision.
|
|||
`DrawBlock` call AFTER `DrawSortCell` returns, so chunk 2 adds one leaf
|
||||
method at the sort-cell EXIT (a `WalkFrameEventKind` of its own, ordered
|
||||
after the cell's object turn) — not a print-site change.
|
||||
- Where does the particle submitter's list membership come from — the
|
||||
particle draw is retail's own `AddMeshToAlphaList` consumer (billboards go
|
||||
to ALPHA), or is it drawn through the emitter's cell turn immediately?
|
||||
Check `ParticleRenderer.cs`'s submit site against the spec's §4 table.
|
||||
- PARTLY SETTLED (2026-09-03): `ParticleRenderer` submits every deferred
|
||||
particle draw (billboard and mesh kinds alike) to the single queue with a
|
||||
viewer distance (`queue.Submit(_alphaSource, token, sqrt(DistanceSq))`).
|
||||
In retail a particle is a `DrawMesh` like any other subset, so its list is
|
||||
decided by the §4 branch table on the emitter's subset mask and material
|
||||
(rows 3/4 → ALPHA under the default `0x0E` delay mask; row 1 immediate
|
||||
while `m_currentlyDrawingSky` is set — the weather emitters). Chunk 2
|
||||
routes particles through the same branch table, not a particle-specific
|
||||
rule; the parts capture (`*.parts.log`, `PD`/`DM` lines) is the oracle for
|
||||
which emitters ever appear as immediate draws.
|
||||
- SETTLED (2026-09-03): the `alphadepth` captures' `AM` lines carry the list
|
||||
selector (`AM mesh=… surf=… csurf=… new=… clip=… listSel=…` — `listSel`
|
||||
is the list, `new` the first-for-list flag, `clip` the clip-map duplicate,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue