i965: Always use the pre-computed offset for the relocation entry
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 21 Jul 2017 15:36:45 +0000 (16:36 +0100)
committerKenneth Graunke <kenneth@whitecape.org>
Fri, 4 Aug 2017 17:26:37 +0000 (10:26 -0700)
commit2410deefff2d1551fabfefa4d0ef48e8d9b73bc2
tree42f1a0a39e9dac964b4fbc65e4422f75eb4cc6dc
parent1d0bd0d1743ec3b924148c9129f964611dca785a
i965: Always use the pre-computed offset for the relocation entry

We must be careful to only compute the address once based on the
per-context information (rather than accessing the unlocked global
bo->offset64) so that the value in the batch does match the
reloc.presumed_offset we declare to the kernel. Otherwise, highly
unlikely, but we may see GPU hangs in multithreaded users.

The only real complication here is isl_surf_fill_state() which needs to
adjust the reloc.delta to both general a tile offset and to encode state
into the lower 12 bits.

(Rebased on ISL changes by Ken.)

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_wm_surface_state.c
src/mesa/drivers/dri/i965/genX_state_upload.c