From b26214e9075c5b8dfc24118a1724b5dd3bb5e22b Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 30 Mar 2020 21:21:49 -0400 Subject: [PATCH] pan/bit: Add `run` mode to the cmdline This emulates the functionality of shader_runner (built for kbase) using the bifrost testing infrastructure so it runs on mainline. Ideally this will let us test shaders from the assembler. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/panfrost/bifrost/cmdline.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/panfrost/bifrost/cmdline.c b/src/panfrost/bifrost/cmdline.c index 24dd3c2d5a5..a62f230cbba 100644 --- a/src/panfrost/bifrost/cmdline.c +++ b/src/panfrost/bifrost/cmdline.c @@ -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"); -- 2.30.2