From: Kenneth Graunke Date: Tue, 30 Sep 2014 00:00:51 +0000 (-0700) Subject: i965: Fix register write checks. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=94841b6d5dac6dcb445a30f083ec6e9858ad2f7d;p=mesa.git i965: Fix register write checks. When mapping the buffer a second time, we need to use the new pointer, not the one from the previous mapping. Otherwise, we will most likely crash. Apparently, we've just been getting lucky and getting the same bo->virtual pointer in both cases. libdrm probably has a hand in that. Signed-off-by: Kenneth Graunke Reviewed-by: Anuj Phogat Cc: mesa-stable@lists.freedesktop.org --- diff --git a/src/mesa/drivers/dri/i965/intel_extensions.c b/src/mesa/drivers/dri/i965/intel_extensions.c index b04bd8fe5bf..bbbb76f3e4e 100644 --- a/src/mesa/drivers/dri/i965/intel_extensions.c +++ b/src/mesa/drivers/dri/i965/intel_extensions.c @@ -87,6 +87,7 @@ can_do_pipelined_register_writes(struct brw_context *brw) /* Check whether the value got written. */ drm_intel_bo_map(brw->batch.workaround_bo, false); + data = brw->batch.workaround_bo->virtual; bool success = data[offset] == expected_value; drm_intel_bo_unmap(brw->batch.workaround_bo); @@ -145,6 +146,7 @@ can_write_oacontrol(struct brw_context *brw) /* Check whether the value got written. */ drm_intel_bo_map(brw->batch.workaround_bo, false); + data = brw->batch.workaround_bo->virtual; bool success = data[offset] == expected_value; drm_intel_bo_unmap(brw->batch.workaround_bo);