Skip to content

i965: Always re-emit CC_STATE after BLEND_STATE on Haswell

Danylo Piliaiev requested to merge GL/mesa:fix/stk-flickering into master

Reemitting 3DSTATE_CC_STATE_POINTERS after emitting 3DSTATE_BLEND_STATE_POINTERS fixes the flickering in SuperTuxCart.

The closest mention in PRM is that it should improve performance.
From the HSW PRM, volume 2b, page 823 (3DSTATE_BLEND_STATE_POINTERS):

"When the BLEND_STATE pointer changes but not the CC_STATE pointer,
driver needs to force a CC_STATE pointer change to improve
blend performance in pixel backend."

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110395
Fixes: eca4a654

While it fixes the issue I don't know why since the mentioned PRM quote should just be an improvement and not a fix.
Either this or reemit blend state on BRW_NEW_FS_PROG_DATA only for gen8+ since the hang which was fixed by eca4a654 doesn't happen on earlier generations.

Edited by Danylo Piliaiev

Merge request reports