Mesa (master): lima/ppir: Add various varying fetch sources to disassembler
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Sep 25 17:39:28 UTC 2019
Module: Mesa
Branch: master
Commit: 0c199808bc84637acce4a0ee7fea8bcabac39b76
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0c199808bc84637acce4a0ee7fea8bcabac39b76
Author: Andreas Baierl <ichgeh at imkreisrum.de>
Date: Thu Sep 19 08:53:18 2019 +0200
lima/ppir: Add various varying fetch sources to disassembler
Signed-off-by: Andreas Baierl <ichgeh at imkreisrum.de>
Reviewed-by: Connor Abbott <cwabbott0 at gmail.com>
---
src/gallium/drivers/lima/ir/pp/disasm.c | 73 ++++++++++++++++++++++-----------
1 file changed, 50 insertions(+), 23 deletions(-)
diff --git a/src/gallium/drivers/lima/ir/pp/disasm.c b/src/gallium/drivers/lima/ir/pp/disasm.c
index 04035a6373a..a45ab85538b 100644
--- a/src/gallium/drivers/lima/ir/pp/disasm.c
+++ b/src/gallium/drivers/lima/ir/pp/disasm.c
@@ -118,6 +118,32 @@ print_source_scalar(unsigned reg, const char *special, bool abs, bool neg)
}
static void
+print_varying_source(ppir_codegen_field_varying *varying)
+{
+ switch (varying->imm.alignment) {
+ case 0:
+ printf("%u.%c", varying->imm.index >> 2,
+ "xyzw"[varying->imm.index & 3]);
+ break;
+ case 1: {
+ const char *c[2] = {"xy", "zw"};
+ printf("%u.%s", varying->imm.index >> 1, c[varying->imm.index & 1]);
+ break;
+ }
+ default:
+ printf("%u", varying->imm.index);
+ break;
+ }
+
+ if (varying->imm.offset_vector != 15) {
+ unsigned reg = (varying->imm.offset_vector << 2) +
+ varying->imm.offset_scalar;
+ printf("+");
+ print_source_scalar(reg, NULL, false, false);
+ }
+}
+
+static void
print_outmod(ppir_codegen_outmod modifier)
{
switch (modifier)
@@ -213,7 +239,28 @@ print_varying(void *code, unsigned offset)
varying->reg.absolute, varying->reg.negate);
break;
case 2:
- printf("gl_FragCoord");
+ switch (varying->imm.perspective) {
+ case 0:
+ printf("cube(");
+ print_varying_source(varying);
+ printf(")");
+ break;
+ case 1:
+ printf("cube(");
+ print_vector_source(varying->reg.source, NULL, varying->reg.swizzle,
+ varying->reg.absolute, varying->reg.negate);
+ printf(")");
+ break;
+ case 2:
+ printf("normalize(");
+ print_vector_source(varying->reg.source, NULL, varying->reg.swizzle,
+ varying->reg.absolute, varying->reg.negate);
+ printf(")");
+ break;
+ default:
+ printf("gl_FragCoord");
+ break;
+ }
break;
case 3:
if (varying->imm.perspective)
@@ -222,27 +269,7 @@ print_varying(void *code, unsigned offset)
printf("gl_PointCoord");
break;
default:
- switch (varying->imm.alignment) {
- case 0:
- printf("%u.%c", varying->imm.index >> 2,
- "xyzw"[varying->imm.index & 3]);
- break;
- case 1: {
- const char *c[2] = {"xy", "zw"};
- printf("%u.%s", varying->imm.index >> 1, c[varying->imm.index & 1]);
- break;
- }
- default:
- printf("%u", varying->imm.index);
- break;
- }
-
- if (varying->imm.offset_vector != 15) {
- unsigned reg = (varying->imm.offset_vector << 2) +
- varying->imm.offset_scalar;
- printf("+");
- print_source_scalar(reg, NULL, false, false);
- }
+ print_varying_source(varying);
break;
}
}
@@ -620,7 +647,7 @@ print_combine(void *code, unsigned offset)
print_dest_scalar(combine->scalar.dest);
}
printf(" ");
-
+
print_source_scalar(combine->scalar.arg0_src, NULL,
combine->scalar.arg0_absolute,
combine->scalar.arg0_negate);
More information about the mesa-commit
mailing list