i965/blorp/gen7+: Stop trashing push constant allocation

Graphics / Mesa 3D Graphics Library / Mesa - Topi Pohjolainen [intel.com] - 4 July 2016 12:43 UTC

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


  • Share