i965: Fix register write checks.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 30 Sep 2014 00:00:51 +0000 (17:00 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 9 Oct 2014 22:04:39 +0000 (00:04 +0200)
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 <kenneth@whitecape.org>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Cc: mesa-stable@lists.freedesktop.org
src/mesa/drivers/dri/i965/intel_extensions.c

index b04bd8fe5bfb656f0eb75c638e492ca842f7626c..bbbb76f3e4e024c4387dee15b848743ac66e9325 100644 (file)
@@ -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);