struct blorp_address address, uint32_t delta)
{
struct anv_cmd_buffer *cmd_buffer = batch->driver_batch;
+ VkResult result;
+
+ if (ANV_ALWAYS_SOFTPIN) {
+ result = anv_reloc_list_add_bo(&cmd_buffer->surface_relocs,
+ &cmd_buffer->pool->alloc,
+ address.buffer);
+ if (unlikely(result != VK_SUCCESS))
+ anv_batch_set_error(&cmd_buffer->batch, result);
+ return;
+ }
+
uint64_t address_u64 = 0;
- VkResult result =
- anv_reloc_list_add(&cmd_buffer->surface_relocs, &cmd_buffer->pool->alloc,
- ss_offset, address.buffer, address.offset + delta,
- &address_u64);
+ result = anv_reloc_list_add(&cmd_buffer->surface_relocs,
+ &cmd_buffer->pool->alloc,
+ ss_offset, address.buffer,
+ address.offset + delta,
+ &address_u64);
if (result != VK_SUCCESS)
anv_batch_set_error(&cmd_buffer->batch, result);
blorp_get_surface_address(struct blorp_batch *blorp_batch,
struct blorp_address address)
{
- /* We'll let blorp_surface_reloc write the address. */
- return 0ull;
+ if (ANV_ALWAYS_SOFTPIN) {
+ struct anv_address anv_addr = {
+ .bo = address.buffer,
+ .offset = address.offset,
+ };
+ return anv_address_physical(anv_addr);
+ } else {
+ /* We'll let blorp_surface_reloc write the address. */
+ return 0;
+ }
}
#if GFX_VER >= 7 && GFX_VER < 10