From 4e9e42cc56ea85cc0fcd7c4f4079c24636aa72b0 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 10 Jun 2019 14:56:32 -0700 Subject: [PATCH] panfrost/midgard/disasm: include textureGather() Signed-off-by: Alyssa Rosenzweig --- .../drivers/panfrost/midgard/disassemble.c | 19 +++++++++++++++---- .../drivers/panfrost/midgard/midgard.h | 2 +- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/gallium/drivers/panfrost/midgard/disassemble.c b/src/gallium/drivers/panfrost/midgard/disassemble.c index bf8de2a2b61..6a4194bc5ca 100644 --- a/src/gallium/drivers/panfrost/midgard/disassemble.c +++ b/src/gallium/drivers/panfrost/midgard/disassemble.c @@ -1048,10 +1048,23 @@ print_texture_format(int format) } static void -print_texture_op(unsigned op) +print_texture_op(unsigned op, bool gather) { /* Act like a bare name, like ESSL functions */ + if (gather) { + printf("textureGather"); + + unsigned component = op >> 4; + unsigned bottom = op & 0xF; + + if (bottom != 0x2) + printf("_unk%d", bottom); + + printf(".%c", components[component]); + return; + } + switch (op) { DEFINE_CASE(TEXTURE_OP_NORMAL, "texture"); DEFINE_CASE(TEXTURE_OP_LOD, "textureLod"); @@ -1077,7 +1090,7 @@ print_texture_word(uint32_t *word, unsigned tabs) midgard_texture_word *texture = (midgard_texture_word *) word; /* Broad category of texture operation in question */ - print_texture_op(texture->op); + print_texture_op(texture->op, texture->is_gather); /* Specific format in question */ print_texture_format(texture->format); @@ -1180,12 +1193,10 @@ print_texture_word(uint32_t *word, unsigned tabs) * following unknowns are zero, so we don't include them */ if (texture->unknown2 || - texture->unknown3 || texture->unknown4 || texture->unknownA || texture->unknown8) { printf("// unknown2 = 0x%x\n", texture->unknown2); - printf("// unknown3 = 0x%x\n", texture->unknown3); printf("// unknown4 = 0x%x\n", texture->unknown4); printf("// unknownA = 0x%x\n", texture->unknownA); printf("// unknown8 = 0x%x\n", texture->unknown8); diff --git a/src/gallium/drivers/panfrost/midgard/midgard.h b/src/gallium/drivers/panfrost/midgard/midgard.h index c9306230872..fa3e38e0879 100644 --- a/src/gallium/drivers/panfrost/midgard/midgard.h +++ b/src/gallium/drivers/panfrost/midgard/midgard.h @@ -510,7 +510,7 @@ __attribute__((__packed__)) unsigned op : 6; unsigned shadow : 1; - unsigned unknown3 : 1; + unsigned is_gather : 1; /* A little obscure, but last is set for the last texture operation in * a shader. cont appears to just be last's opposite (?). Yeah, I know, -- 2.30.2