panfrost/midgard: Add L/S op for writing cubemap coordinates
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Wed, 27 Mar 2019 04:36:42 +0000 (04:36 +0000)
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>
Sun, 31 Mar 2019 02:36:37 +0000 (02:36 +0000)
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
src/gallium/drivers/panfrost/midgard/midgard.h

index 59957c1b566b2a7c5b8544c3b048535c688ab055..b2849aa0fee9b15f43f09f5b36ca7e712b0e02af 100644 (file)
@@ -278,6 +278,14 @@ midgard_writeout;
 
 typedef enum {
         midgard_op_ld_st_noop   = 0x03,
+
+        /* Unclear why this is on the L/S unit, but (with an address of 0,
+         * appropriate swizzle, magic constant 0x24, and xy mask?) moves fp32 cube
+         * map coordinates in r27 to its cube map texture coordinate
+         * destination (e.g r29). 0x4 magic for loading from fp16 instead */
+
+        midgard_op_store_cubemap_coords = 0x0E,
+
         midgard_op_load_attr_16 = 0x95,
         midgard_op_load_attr_32 = 0x94,
         midgard_op_load_vary_16 = 0x99,
@@ -507,6 +515,7 @@ static char *alu_opcode_names[256] = {
 };
 
 static char *load_store_opcode_names[256] = {
+        [midgard_op_store_cubemap_coords] = "st_cubemap_coords",
         [midgard_op_load_attr_16] = "ld_attr_16",
         [midgard_op_load_attr_32] = "ld_attr_32",
         [midgard_op_load_vary_16] = "ld_vary_16",