Packet 3DSTATE_CONSTANT_PS is still emitted explicitly as ps stage itself is enabled and hardware may try to prefetch constants from the buffer. From the BSpec: 3D Pipeline - Windower -3DSTATE_PUSH_CONSTANT_ALLOC_PS
"Specifies the size of the PS constant buffer. This value will determine the amount of data the command stream can pre-fetch before the buffer is full."
This is not possible on gen6. From the BSpec about 3DSTATE_CONSTANT_PS:
"This packet must be followed by WM_STATE."
Binding table emissions for stages other than PS can be now dropped, they were only needed for the 3DSTATE_CONSTANT_XS to be effective:
From the BSpec:
"The 3DSTATE_CONSTANT_* command is not committed to the shader unit until the corresponding (same shader) 3DSTATE_BINDING_TABLE_POINTER_* command is parsed."
cc2d0e6 i965/blorp/gen7+: Stop trashing push constant allocation
src/mesa/drivers/dri/i965/gen7_blorp.c | 49 +-------------------------------
src/mesa/drivers/dri/i965/gen8_blorp.c | 44 ----------------------------
2 files changed, 1 insertion(+), 92 deletions(-)
Upstream: cgit.freedesktop.org