diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-04 21:19:33 -0500 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-04 21:19:33 -0500 |
| commit | 78485465b3990542f613813d070f04d403d927ca (patch) | |
| tree | 6ee3a07d2204efc86986ba8de97337e12a25a865 /docs/04-implementation/04-real-render-walls.md | |
| parent | 1c5ae837cc822651cc0182d47f771f6fdc063d1e (diff) | |
| download | open-iov-78485465b3990542f613813d070f04d403d927ca.tar.gz open-iov-78485465b3990542f613813d070f04d403d927ca.zip | |
docs: session-154c - viewport/clip/RT0 closure with driver semantics and the shader-crutch finding: the 144-byte vs_hex/ps_hex test image overwrote the client SASS and writes no position; removing it lets real SASS survive but stores remain zero, so the next checks are the VS position/attribute fetch and the client upload path
Diffstat (limited to 'docs/04-implementation/04-real-render-walls.md')
| -rw-r--r-- | docs/04-implementation/04-real-render-walls.md | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/docs/04-implementation/04-real-render-walls.md b/docs/04-implementation/04-real-render-walls.md index 4500f5d..3744891 100644 --- a/docs/04-implementation/04-real-render-walls.md +++ b/docs/04-implementation/04-real-render-walls.md @@ -1006,3 +1006,27 @@ replayed context a missing viewport clips all geometry, which matches the zero-fragment observations. The next experiment synthesizes a gated viewport prelude at the window preamble and re-runs the bracket; a pass is any changed page inside the render-target range. + +The synthesized viewport was then closed with the driver's own semantics: the +live viewport macro is MME slot 33 (CALL method 0x3908), the clip rectangle is +0x0c00/0x0c04, and the clip control must read 0x00021800 (Z_CLIP_RANGE +ZERO_ONE | GEOMETRY_CLIP FRUSTUM_XYZ) - the earlier value 1 left the geometry +clip in its WZERO mode. The colour-target closure was also found: the client's +pixel shader has MRT_ENABLE=0 and writes target 0, while the window binds only +target 1. Both a corrected viewport/clip prelude and a target-0 bind with a +two-target SET_CT_SELECT are now gated behind module parameters, and the +pair-state orphan END fix stopped the EC0x0d poison after held windows. With +all of that in place and the DRAW macro executing (DRAW_VERTEX_ARRAY, 60/46 +vertices, QUAD_STRIP), the whole-shadow bracket still reports no render-target +page change. + +The remaining input is the shader content. The program pages carried valid SPH +headers but their code was a 144-byte SPH+EXIT test image supplied through the +`vs_hex`/`ps_hex` debug parameters, which overwrote the client's real SASS; +that image writes no position, so every vertex is degenerate. Removing the +test images lets the real SASS survive at the bound program addresses, but the +engine still stores nothing. The open checks are: whether the real vertex +shader writes position and reads the attribute stream; why the client's own +upload accounting still reports zero applied bytes; whether the vertex fetch +bases hold the geometry the guest writes; and a positive control that draws a +constant-position full-screen triangle with a colour pixel shader. |
