Same struct specified twice and merged in the hw.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21081>
if (present->x) \
size += AGX_##y##_LENGTH;
PPP_CASE(fragment_control, FRAGMENT_CONTROL);
- PPP_CASE(fragment_control_2, FRAGMENT_CONTROL_2);
+ PPP_CASE(fragment_control_2, FRAGMENT_CONTROL);
PPP_CASE(fragment_front_face, FRAGMENT_FACE);
PPP_CASE(fragment_front_face_2, FRAGMENT_FACE_2);
PPP_CASE(fragment_front_stencil, FRAGMENT_STENCIL);
<field name="Compare" size="3" start="25" type="ZS Func"/>
</struct>
- <struct name="Fragment control" size="4">
- <field name="Unk 1" size="1" start="9" type="hex" default="0x1"/>
- <field name="Visibility mode" size="2" start="14" type="Visibility Mode"/>
- <field name="Scissor enable" size="1" start="16" type="bool"/>
- <field name="Depth bias enable" size="1" start="17" type="bool"/>
- <field name="Stencil test enable" size="1" start="18" type="bool"/>
- <field name="Two-sided stencil" size="1" start="19" type="bool"/>
- <field name="Unk fill lines" size="1" start="26" type="hex" default="0x0"/> <!-- set when drawing LINES -->
- </struct>
-
<enum name="Pass type">
<value name="Opaque" value="0"/>
<value name="Translucent" value="1"/>
Translucent punch through seems notably different though? -->
</enum>
- <struct name="Fragment control 2" size="4">
+ <struct name="Fragment control" size="4">
<field name="Unk 1" size="1" start="9" type="bool" default="true"/>
- <!-- Or discards? -->
+ <field name="Visibility mode" size="2" start="14" type="Visibility Mode"/>
+ <field name="Scissor enable" size="1" start="16" type="bool"/>
+ <field name="Depth bias enable" size="1" start="17" type="bool"/>
+ <field name="Stencil test enable" size="1" start="18" type="bool"/>
+ <field name="Two-sided stencil" size="1" start="19" type="bool"/>
<field name="No colour output" size="1" start="21" type="bool"/>
<field name="Sample mask after depth/stencil" size="1" start="25" type="bool"/>
<field name="Disable tri merging" size="1" start="26" type="bool"/>
map += AGX_PPP_HEADER_LENGTH;
PPP_PRINT(map, fragment_control, FRAGMENT_CONTROL, "Fragment control");
- PPP_PRINT(map, fragment_control_2, FRAGMENT_CONTROL_2, "Fragment control 2");
+ PPP_PRINT(map, fragment_control_2, FRAGMENT_CONTROL, "Fragment control 2");
PPP_PRINT(map, fragment_front_face, FRAGMENT_FACE, "Front face");
PPP_PRINT(map, fragment_front_face_2, FRAGMENT_FACE_2, "Front face 2");
PPP_PRINT(map, fragment_front_stencil, FRAGMENT_STENCIL, "Front stencil");
}
if (dirty.fragment_control_2) {
- agx_ppp_push(&ppp, FRAGMENT_CONTROL_2, cfg) {
+ agx_ppp_push(&ppp, FRAGMENT_CONTROL, cfg) {
/* This avoids broken derivatives along primitive edges */
cfg.disable_tri_merging =
(is_lines || is_points || ctx->fs->info.disable_tri_merging);