venus: pass vn_renderer in vn_renderer_bo functions

We will move vn_renderer_bo_ops to vn_renderer in the following commit.

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10437>
This commit is contained in:
Chia-I Wu 2021-04-22 09:40:10 -07:00
parent 6db21119b7
commit 0d703b9d64
2 changed files with 26 additions and 18 deletions

View File

@ -74,7 +74,7 @@ vn_device_memory_simple_free(struct vn_device *dev,
const VkAllocationCallbacks *alloc = &dev->base.base.alloc;
if (mem->base_bo)
vn_renderer_bo_unref(mem->base_bo);
vn_renderer_bo_unref(dev->renderer, mem->base_bo);
vn_async_vkFreeMemory(dev->instance, vn_device_to_handle(dev),
vn_device_memory_to_handle(mem), NULL);
@ -104,7 +104,8 @@ vn_device_memory_pool_grow_locked(struct vn_device *dev,
struct vn_device_memory_pool *pool = &dev->memory_pools[mem_type_index];
if (pool->memory) {
const bool bo_destroyed = vn_renderer_bo_unref(pool->memory->base_bo);
const bool bo_destroyed =
vn_renderer_bo_unref(dev->renderer, pool->memory->base_bo);
pool->memory->base_bo = NULL;
/* we use pool->memory's base_bo to keep it alive */
@ -149,7 +150,7 @@ vn_device_memory_pool_alloc(struct vn_device *dev,
/* we use base_bo to keep base_mem alive */
*base_mem = pool->memory;
*base_bo = vn_renderer_bo_ref(pool->memory->base_bo);
*base_bo = vn_renderer_bo_ref(dev->renderer, pool->memory->base_bo);
*base_offset = pool->used;
pool->used += align64(size, pool_align);
@ -165,7 +166,7 @@ vn_device_memory_pool_free(struct vn_device *dev,
struct vn_renderer_bo *base_bo)
{
/* we use base_bo to keep base_mem alive */
if (vn_renderer_bo_unref(base_bo))
if (vn_renderer_bo_unref(dev->renderer, base_bo))
vn_device_memory_simple_free(dev, base_mem);
}
@ -240,7 +241,7 @@ vn_AllocateMemory(VkDevice device,
result = vn_call_vkAllocateMemory(
dev->instance, device, &memory_allocate_info, NULL, &mem_handle);
if (result != VK_SUCCESS) {
vn_renderer_bo_unref(bo);
vn_renderer_bo_unref(dev->renderer, bo);
vk_free(alloc, mem);
return vn_error(dev->instance, result);
}
@ -299,7 +300,7 @@ vn_FreeMemory(VkDevice device,
vn_device_memory_pool_free(dev, mem->base_memory, mem->base_bo);
} else {
if (mem->base_bo)
vn_renderer_bo_unref(mem->base_bo);
vn_renderer_bo_unref(dev->renderer, mem->base_bo);
vn_async_vkFreeMemory(dev->instance, device, memory, NULL);
}
@ -330,7 +331,7 @@ vn_MapMemory(VkDevice device,
struct vn_device *dev = vn_device_from_handle(device);
struct vn_device_memory *mem = vn_device_memory_from_handle(memory);
void *ptr = vn_renderer_bo_map(mem->base_bo);
void *ptr = vn_renderer_bo_map(dev->renderer, mem->base_bo);
if (!ptr)
return vn_error(dev->instance, VK_ERROR_MEMORY_MAP_FAILED);
@ -351,6 +352,8 @@ vn_FlushMappedMemoryRanges(VkDevice device,
uint32_t memoryRangeCount,
const VkMappedMemoryRange *pMemoryRanges)
{
struct vn_device *dev = vn_device_from_handle(device);
for (uint32_t i = 0; i < memoryRangeCount; i++) {
const VkMappedMemoryRange *range = &pMemoryRanges[i];
struct vn_device_memory *mem =
@ -359,8 +362,8 @@ vn_FlushMappedMemoryRanges(VkDevice device,
const VkDeviceSize size = range->size == VK_WHOLE_SIZE
? mem->map_end - range->offset
: range->size;
vn_renderer_bo_flush(mem->base_bo, mem->base_offset + range->offset,
size);
vn_renderer_bo_flush(dev->renderer, mem->base_bo,
mem->base_offset + range->offset, size);
}
return VK_SUCCESS;
@ -371,6 +374,8 @@ vn_InvalidateMappedMemoryRanges(VkDevice device,
uint32_t memoryRangeCount,
const VkMappedMemoryRange *pMemoryRanges)
{
struct vn_device *dev = vn_device_from_handle(device);
for (uint32_t i = 0; i < memoryRangeCount; i++) {
const VkMappedMemoryRange *range = &pMemoryRanges[i];
struct vn_device_memory *mem =
@ -379,7 +384,7 @@ vn_InvalidateMappedMemoryRanges(VkDevice device,
const VkDeviceSize size = range->size == VK_WHOLE_SIZE
? mem->map_end - range->offset
: range->size;
vn_renderer_bo_invalidate(mem->base_bo,
vn_renderer_bo_invalidate(dev->renderer, mem->base_bo,
mem->base_offset + range->offset, size);
}
@ -413,7 +418,7 @@ vn_GetMemoryFdKHR(VkDevice device,
(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT |
VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT));
assert(!mem->base_memory && mem->base_bo);
*pFd = vn_renderer_bo_export_dmabuf(mem->base_bo);
*pFd = vn_renderer_bo_export_dmabuf(dev->renderer, mem->base_bo);
if (*pFd < 0)
return vn_error(dev->instance, VK_ERROR_TOO_MANY_OBJECTS);
@ -451,7 +456,7 @@ vn_GetMemoryFdPropertiesKHR(VkDevice device,
pMemoryFdProperties->memoryTypeBits =
memory_resource_properties.memoryTypeBits;
vn_renderer_bo_unref(bo);
vn_renderer_bo_unref(dev->renderer, bo);
return result;
}

View File

@ -367,7 +367,7 @@ vn_renderer_bo_create_dmabuf(struct vn_renderer *renderer,
}
static inline struct vn_renderer_bo *
vn_renderer_bo_ref(struct vn_renderer_bo *bo)
vn_renderer_bo_ref(struct vn_renderer *renderer, struct vn_renderer_bo *bo)
{
const int old =
atomic_fetch_add_explicit(&bo->refcount, 1, memory_order_relaxed);
@ -377,7 +377,7 @@ vn_renderer_bo_ref(struct vn_renderer_bo *bo)
}
static inline bool
vn_renderer_bo_unref(struct vn_renderer_bo *bo)
vn_renderer_bo_unref(struct vn_renderer *renderer, struct vn_renderer_bo *bo)
{
const int old =
atomic_fetch_sub_explicit(&bo->refcount, 1, memory_order_release);
@ -393,19 +393,21 @@ vn_renderer_bo_unref(struct vn_renderer_bo *bo)
}
static inline int
vn_renderer_bo_export_dmabuf(struct vn_renderer_bo *bo)
vn_renderer_bo_export_dmabuf(struct vn_renderer *renderer,
struct vn_renderer_bo *bo)
{
return bo->ops.export_dmabuf(bo);
}
static inline void *
vn_renderer_bo_map(struct vn_renderer_bo *bo)
vn_renderer_bo_map(struct vn_renderer *renderer, struct vn_renderer_bo *bo)
{
return bo->ops.map(bo);
}
static inline void
vn_renderer_bo_flush(struct vn_renderer_bo *bo,
vn_renderer_bo_flush(struct vn_renderer *renderer,
struct vn_renderer_bo *bo,
VkDeviceSize offset,
VkDeviceSize end)
{
@ -413,7 +415,8 @@ vn_renderer_bo_flush(struct vn_renderer_bo *bo,
}
static inline void
vn_renderer_bo_invalidate(struct vn_renderer_bo *bo,
vn_renderer_bo_invalidate(struct vn_renderer *renderer,
struct vn_renderer_bo *bo,
VkDeviceSize offset,
VkDeviceSize size)
{