Reality Display Processor/Commands: Difference between revisions

Hazard: Alpha compare in COPY mode targeting 16-bit framebuffers is only valid for RGBA5551 textures
(Make headings for each command visible (mobile fix attempt))
(Hazard: Alpha compare in COPY mode targeting 16-bit framebuffers is only valid for RGBA5551 textures)
 
(One intermediate revision by the same user not shown)
Line 43:
=== 0x08 through 0x0F - Fill Triangle ===
----
 
The Fill Triangle command varies in length depending on whether shade, texture or depth is enabled in the first word. For any of these properties that are enabled, additional words are appended to the base command words in order of shading, texturing, z-buffering.
 
==== Base Command ====
 
Every triangle type begins with a common base that describes the type, shape and other small properties of the triangle.
 
{| class="wikitable" style="text-align: center; white-space:nowrap;"
! colspan="18"|Fill Triangle <code>0x08</code> through <code>0x0F</code> (base)
|-
| rowspan="4"|Word 0 || 63:48 || — || — || 0 || 0 || 1 || shade || texture || zbuffer || lmajor || — || colspan=3| level[2:0] || colspan=3| tile[2:0]
Line 113 ⟶ 120:
}}
 
=== 0x0C through 0x0F - Fill Shaded Triangle ===
----
 
After above 4 words describing a triangle, if requested by the command, these 8 words describing shading:
==== Optional Shading Properties ====
 
If the '''shade''' bit was set in the base triangle description, the above words will be followed by these 8 words describing triangle shading properties:
 
{| class="wikitable" style="text-align: center; white-space:nowrap;"
! colspan="18"|Fill Shaded Triangle (suffix) <code>0x0C</code> … <code>0x0F</code>
|-
| rowspan="4"|Word 0 || 63:48 || - || - || - || - || - || - || - || colspan=9| r.i[8:0]
Line 241 ⟶ 250:
}}
 
=== 0x0A, 0x0B, 0x0E, 0x0F - Fill Textured Triangle ===
----
 
After above 4 words describing a triangle, and optional 8 words describing shading, these 8 words describing texturing:
==== Optional Texturing Properties ====
 
If the '''texture''' bit was set in the base triangle description, the above words will be followed by these 8 words describing triangle texturing properties:
 
{| class="wikitable" style="text-align: center; white-space:nowrap;"
! colspan="18"|Fill Textured Triangle (A,B,E,Fsuffix)
|-
| rowspan="4"|Word 0 || 63:48 || colspan=16| s.i[15:0]
Line 360 ⟶ 372:
}}
 
=== 0x09, 0x0B, 0x0D, 0x0F - Fill Z-Buffered Triangle ===
----
 
After above 4 words describing a triangle, optional 8 words describing shading, and optional 8 words describing texturing, these two words describing z-buffering:
==== Optional Depth Properties ====
 
If the '''zbuffer''' bit was set in the base triangle description, the above words will be followed by these 2 words describing triangle depth properties:
 
{| class="wikitable" style="text-align: center; white-space:nowrap;"
! colspan="18"| Fill Z-Buffered Triangle (9,B,D,Fsuffix)
|-
| rowspan="4"|Word 0 || 63:48 || colspan=16| z.i[15:0]
Line 877 ⟶ 892:
'''Hazards'''
* This is a pipeline configuration command that requires pipeline synchronization before use, otherwise currently rendering primitives may be partially rendered using both the old other modes configuration and the new other modes configuration.
* Alpha compare in COPY mode targeting 16-bit framebuffers is only valid for RGBA5551 textures, it only considers the least-significant bit in the sampled texel for determining whether to write it.
* Blender hazards:
** If memory color was set as a blender input, image_read_en should be enabled for proper operation.
56

edits