diff options
author | Scott D Phillips <[email protected]> | 2018-03-15 12:53:05 -0700 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2018-05-27 19:24:33 -0700 |
commit | 4714784daeb4df97fa82cfcf8f566661cc4ff4a4 (patch) | |
tree | d17453772751e10221f4787d90e314fae356bad9 /src/intel/vulkan/anv_batch_chain.c | |
parent | 1aec4a07d45164fdb9ba4bc97f330a0e217e3bef (diff) |
anv: move canonical_address calculation into a separate function
A later patch will make use of this in other places. Also, remove
dependency on undefined behavior of left-shifting a signed value.
v2: - move function into a separate header (Chris)
v3: (by Ken) Add new header to the various build systems.
Reviewed-by: Jordan Justen <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/intel/vulkan/anv_batch_chain.c')
-rw-r--r-- | src/intel/vulkan/anv_batch_chain.c | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/src/intel/vulkan/anv_batch_chain.c b/src/intel/vulkan/anv_batch_chain.c index e083d79d35b..a1fb8bf731a 100644 --- a/src/intel/vulkan/anv_batch_chain.c +++ b/src/intel/vulkan/anv_batch_chain.c @@ -1110,18 +1110,8 @@ write_reloc(const struct anv_device *device, void *p, uint64_t v, bool flush) { unsigned reloc_size = 0; if (device->info.gen >= 8) { - /* From the Broadwell PRM Vol. 2a, MI_LOAD_REGISTER_MEM::MemoryAddress: - * - * "This field specifies the address of the memory location where the - * register value specified in the DWord above will read from. The - * address specifies the DWord location of the data. Range = - * GraphicsVirtualAddress[63:2] for a DWord register GraphicsAddress - * [63:48] are ignored by the HW and assumed to be in correct - * canonical form [63:48] == [47]." - */ - const int shift = 63 - 47; reloc_size = sizeof(uint64_t); - *(uint64_t *)p = (((int64_t)v) << shift) >> shift; + *(uint64_t *)p = gen_canonical_address(v); } else { reloc_size = sizeof(uint32_t); *(uint32_t *)p = v; |