mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-24 00:40:36 +02:00
hk: Use the new buffer device address infrastructure
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33897>
This commit is contained in:
parent
8ca0531485
commit
b808277d09
3 changed files with 9 additions and 15 deletions
|
|
@ -139,7 +139,7 @@ hk_CreateBuffer(VkDevice device, const VkBufferCreateInfo *pCreateInfo,
|
|||
return vk_errorf(dev, VK_ERROR_OUT_OF_DEVICE_MEMORY,
|
||||
"Sparse VMA allocation failed");
|
||||
}
|
||||
buffer->addr = buffer->va->addr;
|
||||
buffer->vk.device_address = buffer->va->addr;
|
||||
}
|
||||
|
||||
*pBuffer = hk_buffer_to_handle(buffer);
|
||||
|
|
@ -254,13 +254,16 @@ hk_BindBufferMemory2(VkDevice device, uint32_t bindInfoCount,
|
|||
VK_FROM_HANDLE(hk_device, dev, device);
|
||||
size_t size = MIN2(mem->bo->size, buffer->va->size_B);
|
||||
int ret = dev->dev.ops.bo_bind(
|
||||
&dev->dev, mem->bo, buffer->addr, size, pBindInfos[i].memoryOffset,
|
||||
&dev->dev, mem->bo, buffer->vk.device_address, size,
|
||||
pBindInfos[i].memoryOffset,
|
||||
ASAHI_BIND_READ | ASAHI_BIND_WRITE, false);
|
||||
|
||||
if (ret)
|
||||
return VK_ERROR_UNKNOWN;
|
||||
} else {
|
||||
buffer->addr = mem->bo->va->addr + pBindInfos[i].memoryOffset;
|
||||
assert(buffer->vk.device_address == 0);
|
||||
buffer->vk.device_address =
|
||||
mem->bo->va->addr + pBindInfos[i].memoryOffset;
|
||||
}
|
||||
|
||||
const VkBindMemoryStatusKHR *status =
|
||||
|
|
@ -271,15 +274,6 @@ hk_BindBufferMemory2(VkDevice device, uint32_t bindInfoCount,
|
|||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkDeviceAddress VKAPI_CALL
|
||||
hk_GetBufferDeviceAddress(UNUSED VkDevice device,
|
||||
const VkBufferDeviceAddressInfo *pInfo)
|
||||
{
|
||||
VK_FROM_HANDLE(hk_buffer, buffer, pInfo->buffer);
|
||||
|
||||
return hk_buffer_address(buffer, 0);
|
||||
}
|
||||
|
||||
VKAPI_ATTR uint64_t VKAPI_CALL
|
||||
hk_GetBufferOpaqueCaptureAddress(UNUSED VkDevice device,
|
||||
const VkBufferDeviceAddressInfo *pInfo)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ struct hk_physical_device;
|
|||
|
||||
struct hk_buffer {
|
||||
struct vk_buffer vk;
|
||||
uint64_t addr;
|
||||
|
||||
/** Reserved VA for sparse buffers, NULL otherwise. */
|
||||
struct agx_va *va;
|
||||
|
|
@ -28,7 +27,7 @@ VK_DEFINE_NONDISP_HANDLE_CASTS(hk_buffer, vk.base, VkBuffer,
|
|||
static inline uint64_t
|
||||
hk_buffer_address(const struct hk_buffer *buffer, uint64_t offset)
|
||||
{
|
||||
return buffer->addr + offset;
|
||||
return vk_buffer_address(&buffer->vk, offset);
|
||||
}
|
||||
|
||||
static inline struct hk_addr_range
|
||||
|
|
|
|||
|
|
@ -48,7 +48,8 @@ hk_cmd_bind_map_buffer(struct vk_command_buffer *vk_cmd,
|
|||
if (unlikely(T.cpu == NULL))
|
||||
return VK_ERROR_OUT_OF_POOL_MEMORY;
|
||||
|
||||
buffer->addr = T.gpu;
|
||||
assert(buffer->vk.device_address == 0);
|
||||
buffer->vk.device_address = T.gpu;
|
||||
*map_out = T.cpu;
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue