pan/midgard: Analyze helper invocations

We check for texture ops which calculate derivatives (either explicitly
via dFd* or implicitly) and mark the shader as requiring helper
invocations.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
Alyssa Rosenzweig 2019-08-22 16:31:03 -07:00
parent 9d3fc737af
commit 20ac0b8e4e
2 changed files with 22 additions and 0 deletions

View file

@ -1221,6 +1221,22 @@ print_texture_format(int format)
}
}
static bool
midgard_op_has_helpers(unsigned op, bool gather)
{
if (gather)
return true;
switch (op) {
case TEXTURE_OP_NORMAL:
case TEXTURE_OP_DFDX:
case TEXTURE_OP_DFDY:
return true;
default:
return false;
}
}
static void
print_texture_op(unsigned op, bool gather)
{
@ -1281,6 +1297,9 @@ print_texture_word(uint32_t *word, unsigned tabs)
{
midgard_texture_word *texture = (midgard_texture_word *) word;
midg_stats.helper_invocations |=
midgard_op_has_helpers(texture->op, texture->is_gather);
/* Broad category of texture operation in question */
print_texture_op(texture->op, texture->is_gather);

View file

@ -17,6 +17,9 @@ struct midgard_disasm_stats {
unsigned instruction_count;
unsigned bundle_count;
unsigned quadword_count;
/* Should we enable helper invocations? */
bool helper_invocations;
};
struct midgard_disasm_stats