diff options
author | Alyssa Rosenzweig <[email protected]> | 2019-06-10 14:56:32 -0700 |
---|---|---|
committer | Alyssa Rosenzweig <[email protected]> | 2019-06-11 08:44:19 -0700 |
commit | 4e9e42cc56ea85cc0fcd7c4f4079c24636aa72b0 (patch) | |
tree | faddba266c2b2029b6d372619b7f531f00c99a8d /src/gallium/drivers | |
parent | 6c18ae33bc9fa6c1b2f3f75a23f3b1bc00f90e7d (diff) |
panfrost/midgard/disasm: include textureGather()
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r-- | src/gallium/drivers/panfrost/midgard/disassemble.c | 19 | ||||
-rw-r--r-- | src/gallium/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, |