diff --git a/src/panfrost/bifrost/valhall/ISA.xml b/src/panfrost/bifrost/valhall/ISA.xml index 6db3cf7ee77..f41fcf8883c 100644 --- a/src/panfrost/bifrost/valhall/ISA.xml +++ b/src/panfrost/bifrost/valhall/ISA.xml @@ -586,6 +586,17 @@ 32 + + + Size of results for varying texture instructions. For dual 16-bit results + use "16-bit". + + 16 + 32 + 16.32 + 32.32 + + Number of channels loaded/stored for general memory access. none @@ -706,6 +717,21 @@ clobber + + + For fused varying/texture instructions, only the following specific + combinations of sample and update modes are permitted. + + center_store + centroid_store + sample_store + explicit_store + center_clobber + + sample_clobber + retrieve + + In-memory format of varyings. @@ -2401,6 +2427,7 @@ + @@ -2423,6 +2450,8 @@ + + @@ -2432,17 +2461,71 @@ Image to read from - + Only works for FP32 varyings. Performance characteristics are similar - to LD_VAR_IMM_F32.v2.f32 followed by TEX, using both V and T units. + to LD_VAR_BUF_IMM_F32.v2.f32 followed by TEX, using both V and T units. - - - + + + + + + + + + - Image to read from + + + Image to read from + Varying offset + + + + + Only works for FP32 varyings. Performance characteristics are similar + to LD_VAR_BUF_IMM_F32.v2.f32 followed by TEX, using both V and T units. + + + + + + + + + + + + + + + + Image to read from + Varying offset + + + + + Only works for FP32 varyings. Performance characteristics are similar + to LD_VAR_BUF_IMM_F32.v2.f32 followed by TEX_DUAL, using both V and T units. + + + + + + + + + + + + + + + Image to read from + Varying offset diff --git a/src/panfrost/bifrost/valhall/valhall.c.py b/src/panfrost/bifrost/valhall/valhall.c.py index 38b26707b65..78e397ebdd9 100644 --- a/src/panfrost/bifrost/valhall/valhall.c.py +++ b/src/panfrost/bifrost/valhall/valhall.c.py @@ -65,6 +65,11 @@ SKIP = set([ "CLPER.v2u16", "CLPER.v4u8", + # VAR_TEX + "VAR_TEX_BUF_SINGLE", + "VAR_TEX_BUF_GATHER", + "VAR_TEX_BUF_DUAL", + # Special cased "FMA_RSCALE_N.f32", "FMA_RSCALE_LEFT.f32", @@ -80,7 +85,6 @@ SKIP = set([ "FATAN_ASSIST.f32", "SEG_ADD.u64", "TEX_DUAL", - "TODO.VAR_TEX", ]) template = """ diff --git a/src/panfrost/bifrost/valhall/valhall.py b/src/panfrost/bifrost/valhall/valhall.py index de20fbb5c0d..e4b51c6a148 100644 --- a/src/panfrost/bifrost/valhall/valhall.py +++ b/src/panfrost/bifrost/valhall/valhall.py @@ -386,6 +386,7 @@ MODIFIERS = { "skip": Flag("skip", 39), "register_width": Modifier("register_width", 46, 1, force_enum = "register_width"), "secondary_register_width": Modifier("secondary_register_width", 47, 1, force_enum = "register_width"), + "vartex_register_width": Modifier("varying_texture_register_width", 24, 2), "atom_opc": Modifier("atomic_operation", 22, 4), "atom_opc_1": Modifier("atomic_operation_with_1", 22, 4), @@ -405,6 +406,7 @@ MODIFIERS = { "cmp": Modifier("condition", 32, 3), "clamp": Modifier("clamp", 32, 2), "sr_count": Modifier("staging_register_count", 33, 3, implied = True), + "sample_and_update": Modifier("sample_and_update_mode", 33, 3), "sr_write_count": Modifier("staging_register_write_count", 36, 3, implied = True), "conservative": Flag("conservative", 35),