Record the seventh #11 review

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
irisandClaude Opus 5 committed 2026-09-13 17:44:21 -04:00
1 parent 8beb461d83
commit 2937a48133
1 file changed
+17 -11
+17 -11
View File
@@ -5,8 +5,8 @@ Not a decisions log; delete it when the extraction is done.
## Read this first ## Read this first
**Pull request #11 has been reviewed six times ("very close now"); the sixth **Pull request #11 has been reviewed seven times; the seventh is answered in
is answered in `444a2cd` and a seventh has not arrived.** Check for one before doing anything `79dcc15` and an eighth has not arrived.** Check for one before doing anything
else: else:
```sh ```sh
@@ -39,8 +39,8 @@ packing images into arrays like atlas pages, and a bindless `binding_array`
- Agent fork: `git@git.arirex.me:iris-ai/iris.git`. The bot cannot push - Agent fork: `git@git.arirex.me:iris-ai/iris.git`. The bot cannot push
canonical; work in the fork and open PRs into `iris/iris:main`. canonical; work in the fork and open PRs into `iris/iris:main`.
- **#11** `split/11-texture-bindings`, worktree `/home/bob/repos/iris-pr11`, - **#11** `split/11-texture-bindings`, worktree `/home/bob/repos/iris-pr11`,
head `444a2cd`, twelve commits on top of `0f6a28b`. Reviewed six times, all head `79dcc15`, fourteen commits on top of `0f6a28b`. Reviewed seven times,
answered. all answered.
- **#12** `split/12-pointer-routing`, worktree `/home/bob/repos/iris-pr12`, - **#12** `split/12-pointer-routing`, worktree `/home/bob/repos/iris-pr12`,
head `028521b`. A scroll falling through a hovered button. Not reviewed as head `028521b`. A scroll falling through a hovered button. Not reviewed as
of the last check. Independent of #11 and can merge in either order. of the last check. Independent of #11 and can merge in either order.
@@ -65,16 +65,17 @@ shape:
and those are data. `InstanceList` carries a runtime stride and its data as and those are data. `InstanceList` carries a runtime stride and its data as
bytes. Measured: 0.2ns per write over a statically typed list, against 1.6ns bytes. Measured: 0.2ns per write over a statically typed list, against 1.6ns
for a trait object. for a trait object.
- **The shared group is what every pipeline gets**: window, masks, the glyph - **The shared group is what every pipeline gets**: the window and the masks.
atlas array, and the one sampler. A mask texture would go here too. A A mask texture would go here too.
primitive that samples an image of its own declares `Primitive::TEXTURE`, - **`Primitive::SAMPLES` says what a primitive samples and how often it binds**
which gives it an image bind group, a draw call per instance, and the slot -- `Atlas` once for a list, `Image(fn)` for one instance alone, defaulted to
recorded at write time; no other pipeline mentions textures at all. nothing. That is group 2, so a rect's pipeline has no texture or sampler in
its layout. Both cases share one layout builder and one group builder.
- **`shader.wgsl` became `shader/prelude.wgsl` plus one file per primitive**, - **`shader.wgsl` became `shader/prelude.wgsl` plus one file per primitive**,
because one module cannot declare two types at the same binding. The prelude because one module cannot declare two types at the same binding. The prelude
carries only what every primitive uses -- window, masks, vertex shader, carries only what every primitive uses -- window, masks, vertex shader,
`masked()` -- and its header records the group 0 binding numbers; the atlas `masked()` -- and its header is where binding numbers are written down; what
and sampler are declared by the shaders that read them. a shader samples is declared by that shader.
- **A texture handle is drawn like anything else.** `Painter::primitive` takes - **A texture handle is drawn like anything else.** `Painter::primitive` takes
`impl PrimitiveLike`: a primitive, or something that yields one and does what `impl PrimitiveLike`: a primitive, or something that yields one and does what
else drawing it needs -- a `&TextureHandle` retains its share on the way else drawing it needs -- a `&TextureHandle` retains its share on the way
@@ -188,6 +189,11 @@ Still in the target and not yet claimed:
Everything below depends on running them from there; extracting them is a Everything below depends on running them from there; extracting them is a
slice of its own. slice of its own.
The three sampling paths each need a real render, and the examples for two of
them are not in the repo: `/tmp/pr11-checks/run.sh` copies them in, renders
rect+glyph+image together, an image alone in a layer, and a grown atlas, then
removes them again.
## Verifying a framework slice ## Verifying a framework slice
```sh ```sh