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),