pan/genxml: Add float internal and writeback formats

Valhall adds float color target support in hardware, including hardware
blending.  This commit just adds the XML and doesn't enable it in the C
code.  Annoyingly, even though there's enough bits to do otherwise, the
hardware re-interprets the color (writeback) format field in the render
target descriptor based on the internal format.  The easiest way to
handle this in the XML is to just have two different enums and fields in
the Render Target structs which alias.  This seems to be the least
duplication while still encoding the necessary information.

Reviewed-by: Aksel Hjerpbakk <aksel.hjerpbakk@arm.com>
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39171>
This commit is contained in:
Faith Ekstrand 2026-01-05 15:11:21 -05:00 committed by Marge Bot
parent e9a83d530c
commit aac927aa15
4 changed files with 88 additions and 0 deletions

View file

@ -1520,6 +1520,10 @@
<value name="R4G4B4A4" value="4"/>
<value name="R5G6B5A0" value="5"/>
<value name="R5G5B5A1" value="6"/>
<value name="R16F" value="16"/>
<value name="RG16F" value="17"/>
<value name="RGBA16F" value="18"/>
<value name="RG11F_B10F" value="20"/>
<value name="RAW8" value="32"/>
<value name="RAW16" value="33"/>
<value name="RAW32" value="34"/>
@ -1558,6 +1562,22 @@
<value name="NATIVE" value="31"/>
</enum>
<enum name="Float Color Format">
<value name="RAW8" value="0"/>
<value name="RAW16" value="1"/>
<value name="RAW24" value="2"/>
<value name="RAW32" value="3"/>
<value name="RAW48" value="4"/>
<value name="RAW64" value="5"/>
<value name="RAW96" value="6"/>
<value name="RAW128" value="7"/>
<value name="R16F" value="16"/>
<value name="RG16F" value="17"/>
<value name="RGB16F" value="18"/>
<value name="RGBA16F" value="19"/>
<value name="RG11F_B10F" value="20"/>
</enum>
<enum name="Downsampling Accumulation Mode">
<value name="Unsigned normalized integer" value="0"/>
<value name="Signed normalized integer" value="1"/>
@ -1772,6 +1792,7 @@
<field name="Internal Format" size="6" start="0:26" type="Color Buffer Internal Format"/>
<field name="Write Enable" size="1" start="1:0" type="bool"/>
<field name="Writeback Format" size="5" start="1:3" type="Color Format"/>
<field name="Writeback Float Format" size="5" start="1:3" type="Float Color Format"/>
<field name="Writeback Block Format" size="4" start="1:8" type="Block Format"/>
<field name="Writeback MSAA" size="2" start="1:12" type="MSAA"/>
<field name="sRGB" size="1" start="1:14" type="bool"/>
@ -1817,6 +1838,7 @@
<field name="Internal Format" size="6" start="0:26" type="Color Buffer Internal Format"/>
<field name="Write Enable" size="1" start="1:0" type="bool"/>
<field name="Writeback Format" size="5" start="1:3" type="Color Format"/>
<field name="Writeback Float Format" size="5" start="1:3" type="Float Color Format"/>
<field name="Writeback Block Format" size="4" start="1:8" type="Block Format"/>
<field name="Writeback MSAA" size="2" start="1:12" type="MSAA"/>
<field name="sRGB" size="1" start="1:14" type="bool"/>

View file

@ -1786,6 +1786,10 @@
<value name="R4G4B4A4" value="4"/>
<value name="R5G6B5A0" value="5"/>
<value name="R5G5B5A1" value="6"/>
<value name="R16F" value="16"/>
<value name="RG16F" value="17"/>
<value name="RGBA16F" value="18"/>
<value name="RG11F_B10F" value="20"/>
<value name="RAW8" value="32"/>
<value name="RAW16" value="33"/>
<value name="RAW32" value="34"/>
@ -1824,6 +1828,22 @@
<value name="NATIVE" value="31"/>
</enum>
<enum name="Float Color Format">
<value name="RAW8" value="0"/>
<value name="RAW16" value="1"/>
<value name="RAW24" value="2"/>
<value name="RAW32" value="3"/>
<value name="RAW48" value="4"/>
<value name="RAW64" value="5"/>
<value name="RAW96" value="6"/>
<value name="RAW128" value="7"/>
<value name="R16F" value="16"/>
<value name="RG16F" value="17"/>
<value name="RGB16F" value="18"/>
<value name="RGBA16F" value="19"/>
<value name="RG11F_B10F" value="20"/>
</enum>
<enum name="Downsampling Accumulation Mode">
<value name="Unsigned normalized integer" value="0"/>
<value name="Signed normalized integer" value="1"/>
@ -2060,6 +2080,7 @@
<field name="Internal Format" size="6" start="0:26" type="Color Buffer Internal Format"/>
<field name="Write Enable" size="1" start="1:0" type="bool"/>
<field name="Writeback Format" size="5" start="1:3" type="Color Format"/>
<field name="Writeback Float Format" size="5" start="1:3" type="Float Color Format"/>
<field name="Writeback Block Format" size="4" start="1:8" type="Block Format"/>
<field name="Writeback MSAA" size="2" start="1:12" type="MSAA"/>
<field name="sRGB" size="1" start="1:14" type="bool"/>
@ -2105,6 +2126,7 @@
<field name="Internal Format" size="6" start="0:26" type="Color Buffer Internal Format"/>
<field name="Write Enable" size="1" start="1:0" type="bool"/>
<field name="Writeback Format" size="5" start="1:3" type="Color Format"/>
<field name="Writeback Float Format" size="5" start="1:3" type="Float Color Format"/>
<field name="Writeback Block Format" size="4" start="1:8" type="Block Format"/>
<field name="Writeback MSAA" size="2" start="1:12" type="MSAA"/>
<field name="sRGB" size="1" start="1:14" type="bool"/>

View file

@ -2088,6 +2088,10 @@
<value name="R4G4B4A4" value="4"/>
<value name="R5G6B5A0" value="5"/>
<value name="R5G5B5A1" value="6"/>
<value name="R16F" value="16"/>
<value name="RG16F" value="17"/>
<value name="RGBA16F" value="18"/>
<value name="RG11F_B10F" value="20"/>
<value name="RAW8" value="32"/>
<value name="RAW16" value="33"/>
<value name="RAW32" value="34"/>
@ -2126,6 +2130,22 @@
<value name="NATIVE" value="31"/>
</enum>
<enum name="Float Color Format">
<value name="RAW8" value="0"/>
<value name="RAW16" value="1"/>
<value name="RAW24" value="2"/>
<value name="RAW32" value="3"/>
<value name="RAW48" value="4"/>
<value name="RAW64" value="5"/>
<value name="RAW96" value="6"/>
<value name="RAW128" value="7"/>
<value name="R16F" value="16"/>
<value name="RG16F" value="17"/>
<value name="RGB16F" value="18"/>
<value name="RGBA16F" value="19"/>
<value name="RG11F_B10F" value="20"/>
</enum>
<enum name="Downsampling Accumulation Mode">
<value name="Unsigned normalized integer" value="0"/>
<value name="Signed normalized integer" value="1"/>
@ -2366,6 +2386,7 @@
<field name="Internal Format" size="6" start="0:26" type="Color Buffer Internal Format"/>
<field name="Write Enable" size="1" start="1:0" type="bool"/>
<field name="Writeback Format" size="5" start="1:3" type="Color Format"/>
<field name="Writeback Float Format" size="5" start="1:3" type="Float Color Format"/>
<field name="Writeback Block Format" size="4" start="1:8" type="Block Format"/>
<field name="Writeback MSAA" size="2" start="1:12" type="MSAA"/>
<field name="sRGB" size="1" start="1:14" type="bool"/>
@ -2411,6 +2432,7 @@
<field name="Internal Format" size="6" start="0:26" type="Color Buffer Internal Format"/>
<field name="Write Enable" size="1" start="1:0" type="bool"/>
<field name="Writeback Format" size="5" start="1:3" type="Color Format"/>
<field name="Writeback Float Format" size="5" start="1:3" type="Float Color Format"/>
<field name="Writeback Block Format" size="4" start="1:8" type="Block Format"/>
<field name="Writeback MSAA" size="2" start="1:12" type="MSAA"/>
<field name="sRGB" size="1" start="1:14" type="bool"/>

View file

@ -944,6 +944,10 @@
<value name="R4G4B4A4" value="4"/>
<value name="R5G6B5A0" value="5"/>
<value name="R5G5B5A1" value="6"/>
<value name="R16F" value="16"/>
<value name="RG16F" value="17"/>
<value name="RGBA16F" value="18"/>
<value name="RG11F_B10F" value="20"/>
<value name="RAW8" value="32"/>
<value name="RAW16" value="33"/>
<value name="RAW32" value="34"/>
@ -982,6 +986,22 @@
<value name="NATIVE" value="31"/>
</enum>
<enum name="Float Color Format">
<value name="RAW8" value="0"/>
<value name="RAW16" value="1"/>
<value name="RAW24" value="2"/>
<value name="RAW32" value="3"/>
<value name="RAW48" value="4"/>
<value name="RAW64" value="5"/>
<value name="RAW96" value="6"/>
<value name="RAW128" value="7"/>
<value name="R16F" value="16"/>
<value name="RG16F" value="17"/>
<value name="RGB16F" value="18"/>
<value name="RGBA16F" value="19"/>
<value name="RG11F_B10F" value="20"/>
</enum>
<enum name="Downsampling Accumulation Mode">
<value name="Unsigned normalized integer" value="0"/>
<value name="Signed normalized integer" value="1"/>
@ -1195,6 +1215,7 @@
<field name="Internal Format" size="6" start="0:26" type="Color Buffer Internal Format"/>
<field name="Write Enable" size="1" start="1:0" type="bool"/>
<field name="Writeback Format" size="5" start="1:3" type="Color Format"/>
<field name="Writeback Float Format" size="5" start="1:3" type="Float Color Format"/>
<field name="Writeback Block Format" size="4" start="1:8" type="Block Format"/>
<field name="Writeback MSAA" size="2" start="1:12" type="MSAA"/>
<field name="sRGB" size="1" start="1:14" type="bool"/>
@ -1238,6 +1259,7 @@
<field name="Internal Format" size="6" start="0:26" type="Color Buffer Internal Format"/>
<field name="Write Enable" size="1" start="1:0" type="bool"/>
<field name="Writeback Format" size="5" start="1:3" type="Color Format"/>
<field name="Writeback Float Format" size="5" start="1:3" type="Float Color Format"/>
<field name="Writeback Block Format" size="4" start="1:8" type="Block Format"/>
<field name="Writeback MSAA" size="2" start="1:12" type="MSAA"/>
<field name="sRGB" size="1" start="1:14" type="bool"/>