i965/cs: Setup surface binding for gl_NumWorkGroups
This will only be setup when the prog_data uses_num_work_groups boolean is set. At this point nothing will set uses_num_work_groups, but soon code will set it when emitting code for the intrinsic that loads gl_NumWorkGroups. We can't emit this surface information earlier at the start of the DispatchCompute* call because we may not have generated the program yet. Until we generate the program, we don't know if the gl_NumWorkGroups variable is accessed. We also can't emit the surface as part of the brw_cs_state atom, because we might not need the surface if gl_NumWorkGroups is not used by the program. Lastly, we cannot emit the surface later (after state upload) in the DispatchCompute* call, because it needs to be run before the brw_cs_state atom is emitted, since it changes the surface state. Signed-off-by:Jordan Justen <jordan.l.justen@intel.com> Reviewed-by:
Kristian Høgsberg <krh@bitplanet.net>
- src/mesa/drivers/dri/i965/brw_compute.c 2 additions, 0 deletionssrc/mesa/drivers/dri/i965/brw_compute.c
- src/mesa/drivers/dri/i965/brw_context.h 4 additions, 1 deletionsrc/mesa/drivers/dri/i965/brw_context.h
- src/mesa/drivers/dri/i965/brw_state.h 1 addition, 0 deletionssrc/mesa/drivers/dri/i965/brw_state.h
- src/mesa/drivers/dri/i965/brw_state_upload.c 3 additions, 0 deletionssrc/mesa/drivers/dri/i965/brw_state_upload.c
- src/mesa/drivers/dri/i965/brw_wm_surface_state.c 43 additions, 0 deletionssrc/mesa/drivers/dri/i965/brw_wm_surface_state.c