[Mesa-dev] [PATCH] i965: Fix register write checks.

Anuj Phogat anuj.phogat at gmail.com
Thu Oct 9 11:50:38 PDT 2014


On Wed, Oct 8, 2014 at 1:00 AM, Kenneth Graunke <kenneth at whitecape.org> wrote:
> 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 at whitecape.org>
> Cc: mesa-stable at lists.freedesktop.org
> ---
>  src/mesa/drivers/dri/i965/intel_extensions.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/src/mesa/drivers/dri/i965/intel_extensions.c b/src/mesa/drivers/dri/i965/intel_extensions.c
> index b04bd8f..bbbb76f 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);
>
> --
> 2.1.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Nice catch.
Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>


More information about the mesa-dev mailing list