summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/panfrost/midgard/midgard.h6
-rw-r--r--src/panfrost/midgard/midgard_compile.c1
-rw-r--r--src/panfrost/midgard/midgard_ops.c2
3 files changed, 9 insertions, 0 deletions
diff --git a/src/panfrost/midgard/midgard.h b/src/panfrost/midgard/midgard.h
index 560c1295135..909a2d12d2c 100644
--- a/src/panfrost/midgard/midgard.h
+++ b/src/panfrost/midgard/midgard.h
@@ -391,6 +391,12 @@ midgard_writeout;
typedef enum {
midgard_op_ld_st_noop = 0x03,
+ /* Unpack a colour from a native format to fp16 */
+ midgard_op_unpack_colour = 0x05,
+
+ /* Packs a colour from fp16 to a native format */
+ midgard_op_pack_colour = 0x09,
+
/* Unclear why this is on the L/S unit, but moves fp32 cube map
* coordinates in r27 to its cube map texture coordinate destination
* (e.g r29). */
diff --git a/src/panfrost/midgard/midgard_compile.c b/src/panfrost/midgard/midgard_compile.c
index f1cf91caeca..d536f66449b 100644
--- a/src/panfrost/midgard/midgard_compile.c
+++ b/src/panfrost/midgard/midgard_compile.c
@@ -210,6 +210,7 @@ M_LOAD(ld_color_buffer_32u);
M_STORE(st_vary_32);
M_LOAD(ld_cubemap_coords);
M_LOAD(ld_compute_id);
+M_LOAD(pack_colour);
static midgard_instruction
v_branch(bool conditional, bool invert)
diff --git a/src/panfrost/midgard/midgard_ops.c b/src/panfrost/midgard/midgard_ops.c
index 4d33eaa3da4..2f33af06635 100644
--- a/src/panfrost/midgard/midgard_ops.c
+++ b/src/panfrost/midgard/midgard_ops.c
@@ -180,6 +180,8 @@ struct mir_op_props alu_opcode_props[256] = {
#define M64 midgard_reg_mode_64
struct mir_ldst_op_props load_store_opcode_props[256] = {
+ [midgard_op_unpack_colour] = {"unpack_colour", M32},
+ [midgard_op_pack_colour] = {"pack_colour", M32},
[midgard_op_ld_cubemap_coords] = {"ld_cubemap_coords", M32},
[midgard_op_ld_compute_id] = {"ld_compute_id", M32},
[midgard_op_ldst_perspective_division_z] = {"ldst_perspective_division_z", M32},