- 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
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;