i965: Switch to absolute addressing for constant buffer 0.
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 15 Aug 2014 05:36:45 +0000 (22:36 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Fri, 14 Jul 2017 02:56:49 +0000 (19:56 -0700)
commit8ec5a4e4a4a32f4de351c5fc2bf0eb615b6eef1b
tree00cf4d1e9f0c0ce9197f5440a865e36240eaaedc
parent86bd3fd864a8383e1d6823114da422f6a948bf1e
i965: Switch to absolute addressing for constant buffer 0.

By default, 3DSTATE_CONSTANT_* Constant Buffer 0 is relative to dynamic
state base address.  This makes it unusable for pushing UBOs.  I'd like
to be able to use all four push buffers.

There is a bit in the INSTPM register (or CS_DEBUG_MODE2 on Skylake)
which controls whether buffer 0 is relative to dynamic state base
address, or simply a normal pointer.  Setting that gives us full
flexibility.

We can't currently write this on Haswell and earlier, and will need
to update the kernel command parser, and then do the whole version
checking song and dance.

Reviewed-by: Matt Turner <mattst88@gmail.com>
src/intel/compiler/brw_compiler.h
src/mesa/drivers/dri/i965/brw_defines.h
src/mesa/drivers/dri/i965/brw_state_upload.c
src/mesa/drivers/dri/i965/intel_screen.c