From 841eee5d44b222a5819804726187683033eb71db Mon Sep 17 00:00:00 2001 From: =?utf8?q?St=C3=A9phane=20Marchesin?= Date: Wed, 13 Jun 2012 10:00:57 -0700 Subject: [PATCH] i915g: More ops commute. This allows using the optimizations more broadly. --- src/gallium/drivers/i915/TODO | 3 +++ src/gallium/drivers/i915/i915_fpc_optimize.c | 25 +++++++++++++++----- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/i915/TODO b/src/gallium/drivers/i915/TODO index d52c1c0943b..c72f09a7cd7 100644 --- a/src/gallium/drivers/i915/TODO +++ b/src/gallium/drivers/i915/TODO @@ -42,5 +42,8 @@ Random list of problems with i915g: - Continue a previous primitive when there are no state changes +- Switch to the blitter for those buggy blit copies +- Or state save/restore has a bug with u_blitter, fix it. + Other bugs can be found here: https://bugs.freedesktop.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&component=Drivers/Gallium/i915g diff --git a/src/gallium/drivers/i915/i915_fpc_optimize.c b/src/gallium/drivers/i915/i915_fpc_optimize.c index b09f18b01ee..ce1c5f98301 100644 --- a/src/gallium/drivers/i915/i915_fpc_optimize.c +++ b/src/gallium/drivers/i915/i915_fpc_optimize.c @@ -87,17 +87,30 @@ static boolean is_unswizzled(struct i915_full_src_register* r, static boolean op_commutes(unsigned opcode) { - if (opcode == TGSI_OPCODE_ADD) return TRUE; - if (opcode == TGSI_OPCODE_MUL) return TRUE; + switch(opcode) + { + case TGSI_OPCODE_ADD: + case TGSI_OPCODE_MUL: + case TGSI_OPCODE_DP2: + case TGSI_OPCODE_DP3: + case TGSI_OPCODE_DP4: + return TRUE; + } return FALSE; } static unsigned op_neutral_element(unsigned opcode) { - if (opcode == TGSI_OPCODE_ADD) - return TGSI_SWIZZLE_ZERO; - if (opcode == TGSI_OPCODE_MUL) - return TGSI_SWIZZLE_ONE; + switch(opcode) + { + case TGSI_OPCODE_ADD: + return TGSI_SWIZZLE_ZERO; + case TGSI_OPCODE_MUL: + case TGSI_OPCODE_DP2: + case TGSI_OPCODE_DP3: + case TGSI_OPCODE_DP4: + return TGSI_SWIZZLE_ONE; + } debug_printf("Unknown opcode %d\n",opcode); return TGSI_SWIZZLE_ZERO; -- 2.30.2