====== Pixel Engine ====== The Pixel Engine receives drawing parameters from RISC draw/step instructions or the Triangle Engine. It applies texture sampling, source color operations, visibility tests, blending, fog, dithering and plane masks before writing local memory. ===== State writes ===== ''spr'', ''spri'' and ''sprii'' write a complete register or a register field. The selector is the spr index; the value comes from S2 or the immediate operand. A field write retains its original bit position within the operand. It is not shifted down to bit zero. Pixel Engine mode registers are pipelined. The specification says they can be written without waiting for Pixel idle. Coherent PCI memory access and final readback require separate synchronization; see [[host:interface|Host interface]] and [[system:context|Context switching]]. ^ State group ^ Registers / reference ^ | Texture | [[registers:pixel-engine:pixel_srcbase|SrcBase]], [[registers:pixel-engine:pixel_srcmode|SrcMode]], [[registers:pixel-engine:pixel_srcmask|SrcMask]], [[pixel:texture|texture sampling]] | | Addressing | [[registers:pixel-engine:pixel_dstbase|DstBase]], [[registers:pixel-engine:pixel_zbase|ZBase]], [[registers:pixel-engine:pixel_stride|Stride]] | | Output | [[registers:pixel-engine:pixel_dstmode|DstMode]], [[registers:pixel-engine:pixel_dstfmt|DstFmt]], [[registers:pixel-engine:pixel_pmask|PMask]], [[pixel:destination|destination processing]] | | Visibility | [[registers:pixel-engine:pixel_scissorx|ScissorX]], [[registers:pixel-engine:pixel_scissory|ScissorY]], [[registers:pixel-engine:pixel_alphathres|AlphaThres]], [[pixel:pick|Pick]] | | Pattern | [[pixel:pattern|Pattern, PatMode and PatOffset]] | | Colors | [[registers:pixel-engine:pixel_fgcolor|FGColor]], [[registers:pixel-engine:pixel_bgcolor|BGColor]], [[registers:pixel-engine:pixel_fogcolor|FogColor]], [[registers:pixel-engine:pixel_speccolor|SpecColor]] | | Conversion | [[pixel:color_conversion|YUV-to-RGB conversion]] | Scissors use half-open ranges: L ≤ X < R and T ≤ Y < B, also requiring 0 ≤ coordinate < 2048. DstBase must be word aligned; ZBase must be half-word aligned. SrcBase is byte aligned, except YUYV sources require word alignment. ''spr Sync'' is unconditional when bit 16 is clear: it waits for prior drawing commands to complete. When bit 16 is set it waits only if destination or Z data is being read. Sources: [[https://verite.3d32.org/_media/source/v2200spec.pdf#page=28|Technical Spec, p.28]], [[https://verite.3d32.org/_media/source/v2200spec.pdf#page=29|Technical Spec, p.29]]