pan/bit: Add `run` mode to the cmdline
[mesa.git] / src / panfrost / bifrost / cmdline.c
index 24dd3c2d5a5582050af07b72467e32a0608803a1..a62f230cbba17488b03b22a9b6b191c1b56a1218 100644 (file)
@@ -106,6 +106,38 @@ test_vertex(char **argv)
         bit_vertex(dev, compile_shader(argv, true));
 }
 
+static void
+run(const char *filename)
+{
+        FILE *fp = fopen(filename, "rb");
+        assert(fp);
+
+        fseek(fp, 0, SEEK_END);
+        unsigned filesize = ftell(fp);
+        rewind(fp);
+
+        unsigned char *code = malloc(filesize);
+        unsigned res = fread(code, 1, filesize, fp);
+        if (res != filesize) {
+                printf("Couldn't read full file\n");
+        }
+        fclose(fp);
+
+        void *memctx = NULL; /* TODO */
+        struct panfrost_device *dev = bit_initialize(memctx);
+
+        panfrost_program prog = {
+                .compiled = {
+                        .data = code,
+                        .size = filesize
+                },
+        };
+
+        bit_vertex(dev, prog);
+
+        free(code);
+}
+
 int
 main(int argc, char **argv)
 {
@@ -120,6 +152,8 @@ main(int argc, char **argv)
                 disassemble(argv[2]);
         else if (strcmp(argv[1], "test-vertex") == 0)
                 test_vertex(&argv[2]);
+        else if (strcmp(argv[1], "run") == 0)
+                run(argv[2]);
         else
                 unreachable("Unknown command. Valid: compile/disasm");