digic6:registers
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
digic6:registers [2025/05/05 19:09] – [Hardware compositor / layers] kitor | digic6:registers [2025/05/05 19:14] (current) – kitor | ||
---|---|---|---|
Line 24: | Line 24: | ||
^ Offset ^ Summary | ^ Offset ^ Summary | ||
| +0 | Flags | Configures data type, transformations (flip, upscale), zebras, etc | | | +0 | Flags | Configures data type, transformations (flip, upscale), zebras, etc | | ||
- | | +0x4 | Vram index ? | Assignment to a peviously | + | | +0x4 | Vram index ? | Assignment to a previously |
| +0x8 | Input offsets | | +0x8 | Input offsets | ||
| +0xC | Vram resolution | | +0xC | Vram resolution | ||
Line 34: | Line 34: | ||
=== Vram index === | === Vram index === | ||
- | Wildly enough, MMIO doesn' | + | Wildly enough, MMIO doesn' |
Vram index register seems to also take two 16 bit values instead of one, possibly for layers that use separate image and alpha buffers (eg UYVY+AA, unconfirmed). | Vram index register seems to also take two 16 bit values instead of one, possibly for layers that use separate image and alpha buffers (eg UYVY+AA, unconfirmed). | ||
Line 96: | Line 96: | ||
- | ^ Base address | + | ^ Base address |
- | | '' | + | | '' |
- | | '' | + | | '' |
MMIO structure is as below: | MMIO structure is as below: | ||
- | ^ Offset ^ Summary | + | ^ Offset ^ Summary |
- | | +0x0 | index | Numerical ID, 8 bits - used for assignment in HW layer registers. | + | | +0x0 | index | Numerical ID, 8 bits - used for assignment in HW layer registers. |
- | | +0x4 | pitch ? | Derivative of image width. Computed as '' | + | | +0x4 | pitch ? | Derivative of image width. Computed as '' |
- | | +0x8 | pointer-ish | Vram address bit shifted 8 to the right. Possibly to enforce alignment. | + | | +0x8 | pointer-ish | Vram address bit shifted 8 to the right. Possibly to enforce alignment. |
MMIO as to be written in order, be aware of any compiler optimizations (best to set data structures as volatile). | MMIO as to be written in order, be aware of any compiler optimizations (best to set data structures as volatile). | ||
Line 135: | Line 135: | ||
This works differently than Digic 5 and below. There' | This works differently than Digic 5 and below. There' | ||
- | ^ Address | + | ^ Address |
- | | '' | + | | '' |
- | | '' | + | | '' |
- | | ''?'' | + | | ''?'' |
MMIO structure is as below: | MMIO structure is as below: | ||
- | ^ Offset ^ Summary | + | ^ Offset ^ Summary |
- | | +0x0 | apply | Write 0x1 to apply selected palette | + | | +0x0 | apply | Write 0x1 to apply selected palette |
- | | +0x4 | flag maybe | Unknown, Canon BL writes 0xFF | + | | +0x4 | flag maybe | Unknown, Canon BL writes 0xFF | |
- | | +0x8 | pointer-ish | Palette address, bit shifted 4 to the right. Possibly to enforce alignment. | + | | +0x8 | pointer-ish | Palette address, bit shifted 4 to the right. Possibly to enforce alignment. |
Please note that fields has to be written in order: flag, pointer, apply. | Please note that fields has to be written in order: flag, pointer, apply. |
digic6/registers.1746464996.txt.gz · Last modified: 2025/05/05 19:09 by kitor