Module: Mesa
Branch: master
Commit: 3aaab87563e40bdd8fb98494d7e3eb844521476c
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3aaab87563e40bdd8fb98494d7e3eb844521476c

Author: Rob Clark <[email protected]>
Date:   Mon Sep 29 08:52:16 2014 -0400

freedreno/ir3: add some cmdline args

Signed-off-by: Rob Clark <[email protected]>

---

 src/gallium/drivers/freedreno/ir3/ir3_cmdline.c |   95 +++++++++++++++++++++--
 1 file changed, 87 insertions(+), 8 deletions(-)

diff --git a/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c 
b/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c
index 9944521..5e18325 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c
+++ b/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c
@@ -85,7 +85,7 @@ static void dump_info(struct ir3_shader_variant *so)
 }
 
 
-static void
+static int
 read_file(const char *filename, void **ptr, size_t *size)
 {
        int fd, ret;
@@ -94,8 +94,10 @@ read_file(const char *filename, void **ptr, size_t *size)
        *ptr = MAP_FAILED;
 
        fd = open(filename, O_RDONLY);
-       if (fd == -1)
-               errx(1, "couldn't open `%s'", filename);
+       if (fd == -1) {
+               warnx("couldn't open `%s'", filename);
+               return 1;
+       }
 
        ret = fstat(fd, &st);
        if (ret)
@@ -107,6 +109,8 @@ read_file(const char *filename, void **ptr, size_t *size)
                errx(1, "couldn't map `%s'", filename);
 
        close(fd);
+
+       return 0;
 }
 
 static void reset_variant(struct ir3_shader_variant *v, const char *msg)
@@ -119,26 +123,101 @@ static void reset_variant(struct ir3_shader_variant *v, 
const char *msg)
        v->immediates_count = 0;
 }
 
+static void print_usage(void)
+{
+       printf("Usage: ir3_compiler [OPTIONS]... FILE\n");
+       printf("    --verbose         - verbose compiler/debug messages\n");
+       printf("    --binning-pass    - generate binning pass shader (VERT)\n");
+       printf("    --color-two-side  - emulate two-sided color (FRAG)\n");
+       printf("    --half-precision  - use half-precision\n");
+       printf("    --alpha           - generate render-to-alpha shader 
(FRAG)\n");
+       printf("    --saturate-s MASK - bitmask of samplers to saturate S 
coord\n");
+       printf("    --saturate-t MASK - bitmask of samplers to saturate T 
coord\n");
+       printf("    --saturate-r MASK - bitmask of samplers to saturate R 
coord\n");
+       printf("    --help            - show this message\n");
+}
+
 int main(int argc, char **argv)
 {
-       int ret = 0;
-       const char *filename = argv[1];
+       int ret = 0, n = 1;
+       const char *filename;
        struct tgsi_token toks[65536];
        struct tgsi_parse_context parse;
        struct ir3_shader_variant v;
        struct ir3_shader_key key = {
-               .color_two_side = true,
        };
        void *ptr;
        size_t size;
 
-       fd_mesa_debug |= FD_DBG_DISASM | FD_DBG_OPTDUMP | FD_DBG_MSGS | 
FD_DBG_OPTMSGS;
+       fd_mesa_debug |= FD_DBG_DISASM;
+
+       while (n < argc) {
+               if (!strcmp(argv[n], "--verbose")) {
+                       fd_mesa_debug |=  FD_DBG_OPTDUMP | FD_DBG_MSGS | 
FD_DBG_OPTMSGS;
+                       n++;
+                       continue;
+               }
 
+               if (!strcmp(argv[n], "--binning-pass")) {
+                       key.binning_pass = true;
+                       n++;
+                       continue;
+               }
+
+               if (!strcmp(argv[n], "--color-two-side")) {
+                       key.color_two_side = true;
+                       n++;
+                       continue;
+               }
+
+               if (!strcmp(argv[n], "--half-precision")) {
+                       key.half_precision = true;
+                       n++;
+                       continue;
+               }
+
+               if (!strcmp(argv[n], "--alpha")) {
+                       key.alpha = true;
+                       n++;
+                       continue;
+               }
+
+               if (!strcmp(argv[n], "--saturate-s")) {
+                       key.vsaturate_s = key.fsaturate_s = strtol(argv[n+1], 
NULL, 0);
+                       n += 2;
+                       continue;
+               }
+
+               if (!strcmp(argv[n], "--saturate-t")) {
+                       key.vsaturate_t = key.fsaturate_t = strtol(argv[n+1], 
NULL, 0);
+                       n += 2;
+                       continue;
+               }
+
+               if (!strcmp(argv[n], "--saturate-r")) {
+                       key.vsaturate_r = key.fsaturate_r = strtol(argv[n+1], 
NULL, 0);
+                       n += 2;
+                       continue;
+               }
+
+               if (!strcmp(argv[n], "--help")) {
+                       print_usage();
+                       return 0;
+               }
+
+               break;
+       }
+
+       filename = argv[n];
 
        memset(&v, 0, sizeof(v));
        v.key = key;
 
-       read_file(filename, &ptr, &size);
+       ret = read_file(filename, &ptr, &size);
+       if (ret) {
+               print_usage();
+               return ret;
+       }
 
        if (!tgsi_text_translate(ptr, toks, Elements(toks)))
                errx(1, "could not parse `%s'", filename);

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to