From 83427acc87730d2fab2eddffbb19fc9d85863407 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Tue, 17 Jul 2018 15:05:28 +0100 Subject: [PATCH] i965: batchbuffer: write correct canonical offset with softpin Addresses in the command streams should be in canonical form (i.e bit[63:48] == bit[47]). If the [bo->gtt_offset, bo->gtt_offset + target_offset] range contains the address 0x800000000000, the current code will fail that criteria. v2: Fix missing include (Lionel) Fixes: 1c9053d0765dc6 ("i965: Prepare batchbuffer module for softpin support.") Signed-off-by: Lionel Landwerlin Reviewed-by: Kenneth Graunke --- src/mesa/drivers/dri/i965/intel_batchbuffer.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.c b/src/mesa/drivers/dri/i965/intel_batchbuffer.c index df999ff..65d2c64 100644 --- a/src/mesa/drivers/dri/i965/intel_batchbuffer.c +++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.c @@ -32,6 +32,7 @@ #include "brw_defines.h" #include "brw_state.h" #include "common/gen_decoder.h" +#include "common/gen_gem.h" #include "util/hash_table.h" @@ -922,7 +923,7 @@ emit_reloc(struct intel_batchbuffer *batch, if (target->kflags & EXEC_OBJECT_PINNED) { brw_use_pinned_bo(batch, target, reloc_flags & RELOC_WRITE); - return target->gtt_offset + target_offset; + return gen_canonical_address(target->gtt_offset + target_offset); } unsigned int index = add_exec_bo(batch, target); -- 2.7.4