vc4: Start using tgsi_lowering for opcodes we haven't supported before.
authorEric Anholt <eric@anholt.net>
Tue, 30 Sep 2014 20:25:24 +0000 (13:25 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 8 Oct 2014 15:42:59 +0000 (17:42 +0200)
src/gallium/drivers/vc4/vc4_program.c

index 26068e2..52de8a8 100644 (file)
@@ -33,6 +33,7 @@
 #include "util/ralloc.h"
 #include "tgsi/tgsi_dump.h"
 #include "tgsi/tgsi_info.h"
+#include "tgsi/tgsi_lowering.h"
 
 #include "vc4_context.h"
 #include "vc4_qpu.h"
@@ -1730,7 +1731,20 @@ vc4_shader_state_create(struct pipe_context *pctx,
         if (!so)
                 return NULL;
 
-        so->tokens = tgsi_dup_tokens(cso->tokens);
+        const struct tgsi_lowering_config lowering_config = {
+                .lower_DST = true,
+                .lower_XPD = true,
+                .lower_SCS = true,
+                .lower_EXP = true,
+                .lower_LOG = true,
+                .lower_DPH = true,
+                .lower_DP2A = true,
+        };
+
+        struct tgsi_shader_info info;
+        so->tokens = tgsi_transform_lowering(&lowering_config, cso->tokens, &info);
+        if (!so->tokens)
+                so->tokens = tgsi_dup_tokens(cso->tokens);
 
         return so;
 }