pan/bi: Model Valhall texture instructions

These act like a TEXC+immediate.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15216>
This commit is contained in:
Alyssa Rosenzweig 2022-03-02 10:03:54 -05:00 committed by Marge Bot
parent 234d3efb9b
commit 3c817ed511
2 changed files with 158 additions and 1 deletions

View file

@ -8347,4 +8347,151 @@
</mod> </mod>
</ins> </ins>
<ins name="+TEX_SINGLE" staging="rw=sr_count" message="tex" pseudo="true">
<src start="0"/>
<src start="1"/>
<immediate name="sr_count" size="4" pseudo="true"/>
<mod name="texel_offset" start="9" size="1" opt="texel_offset"/>
<mod name="skip" start="9" size="1" opt="skip"/>
<mod name="shadow" start="9" size="1" opt="shadow"/>
<mod name="array_enable" start="9" size="1" opt="array_enable"/>
<mod name="dimension" start="9" size="2">
<opt>1d</opt>
<opt>2d</opt>
<opt>3d</opt>
<opt>cube</opt>
</mod>
<mod name="write_mask" start="9" size="2">
<opt>none</opt>
<opt>r</opt>
<opt>g</opt>
<opt>rg</opt>
<opt>b</opt>
<opt>rb</opt>
<opt>gb</opt>
<opt>rgb</opt>
<opt>a</opt>
<opt>ra</opt>
<opt>ga</opt>
<opt>rga</opt>
<opt>ba</opt>
<opt>rba</opt>
<opt>gba</opt>
<opt>rgba</opt>
</mod>
<mod name="va_lod_mode" start="13" size="3" default="zero_lod">
<opt>zero_lod</opt>
<opt>computed_lod</opt>
<opt>explicit</opt>
<opt>computed_bias</opt>
<opt>grdesc</opt>
</mod>
<mod name="register_format" size="4">
<opt>f16</opt>
<opt>f32</opt>
<opt>s32</opt>
<opt>u32</opt>
<opt>s16</opt>
<opt>u16</opt>
</mod>
</ins>
<ins name="+TEX_FETCH" staging="rw=sr_count" message="tex" pseudo="true">
<src start="0"/>
<src start="1"/>
<immediate name="sr_count" size="4" pseudo="true"/>
<mod name="texel_offset" start="9" size="1" opt="texel_offset"/>
<mod name="skip" start="9" size="1" opt="skip"/>
<mod name="array_enable" start="9" size="1" opt="array_enable"/>
<mod name="dimension" start="9" size="2">
<opt>1d</opt>
<opt>2d</opt>
<opt>3d</opt>
<opt>cube</opt>
</mod>
<mod name="write_mask" start="9" size="2">
<opt>none</opt>
<opt>r</opt>
<opt>g</opt>
<opt>rg</opt>
<opt>b</opt>
<opt>rb</opt>
<opt>gb</opt>
<opt>rgb</opt>
<opt>a</opt>
<opt>ra</opt>
<opt>ga</opt>
<opt>rga</opt>
<opt>ba</opt>
<opt>rba</opt>
<opt>gba</opt>
<opt>rgba</opt>
</mod>
<mod name="register_format" size="4">
<opt>f16</opt>
<opt>f32</opt>
<opt>s32</opt>
<opt>u32</opt>
<opt>s16</opt>
<opt>u16</opt>
</mod>
</ins>
<ins name="+TEX_GATHER" staging="rw=sr_count" message="tex" pseudo="true">
<src start="0"/>
<src start="1"/>
<immediate name="sr_count" size="4" pseudo="true"/>
<mod name="texel_offset" start="9" size="1" opt="texel_offset"/>
<mod name="skip" start="9" size="1" opt="skip"/>
<mod name="array_enable" start="9" size="1" opt="array_enable"/>
<mod name="integer_coordinates" start="9" size="1" opt="integer_coordinates"/>
<mod name="fetch_component" start="9" size="2">
<opt>gather4_r</opt>
<opt>gather4_g</opt>
<opt>gather4_b</opt>
<opt>gather4_a</opt>
</mod>
<mod name="dimension" start="9" size="2">
<opt>1d</opt>
<opt>2d</opt>
<opt>3d</opt>
<opt>cube</opt>
</mod>
<mod name="write_mask" start="9" size="2">
<opt>none</opt>
<opt>r</opt>
<opt>g</opt>
<opt>rg</opt>
<opt>b</opt>
<opt>rb</opt>
<opt>gb</opt>
<opt>rgb</opt>
<opt>a</opt>
<opt>ra</opt>
<opt>ga</opt>
<opt>rga</opt>
<opt>ba</opt>
<opt>rba</opt>
<opt>gba</opt>
<opt>rgba</opt>
</mod>
<mod name="register_format" size="4">
<opt>f16</opt>
<opt>f32</opt>
<opt>s32</opt>
<opt>u32</opt>
<opt>s16</opt>
<opt>u16</opt>
</mod>
</ins>
<ins name="+CUBEFACE2_V9" pseudo="true">
<src start="0" mask="0xfb"/>
<src start="3" mask="0xfb"/>
<src start="6"/>
<mod name="neg0" size="1" opt="neg"/>
<mod name="neg1" size="1" opt="neg"/>
<mod name="neg2" size="1" opt="neg"/>
</ins>
</bifrost> </bifrost>

View file

@ -480,10 +480,20 @@ typedef struct {
enum bi_varying_name varying_name; /* LD_VAR_SPECIAL */ enum bi_varying_name varying_name; /* LD_VAR_SPECIAL */
bool skip; /* VAR_TEX, TEXS, TEXC */ bool skip; /* VAR_TEX, TEXS, TEXC */
bool lod_mode; /* VAR_TEX, TEXS, implicitly for TEXC */ bool lod_mode; /* VAR_TEX, TEXS, implicitly for TEXC */
/* Used for valhall texturing */
bool shadow;
bool texel_offset;
bool array_enable;
bool integer_coordinates;
enum bi_fetch_component fetch_component;
enum bi_va_lod_mode va_lod_mode;
enum bi_dimension dimension;
enum bi_write_mask write_mask;
}; };
/* Maximum size, for hashing */ /* Maximum size, for hashing */
unsigned flags[5]; unsigned flags[11];
struct { struct {
enum bi_subgroup subgroup; /* WMASK, CLPER */ enum bi_subgroup subgroup; /* WMASK, CLPER */