mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-10 05:00:31 +01:00
panvk: Move the VkCommandPool logic to panvk_cmd_pool.{c,h}
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com> Reviewed-by: Rebecca Mckeever <rebecca.mckeever@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28170>
This commit is contained in:
parent
7bf8805e5a
commit
afbac1af77
6 changed files with 83 additions and 54 deletions
|
|
@ -37,6 +37,7 @@ panvk_entrypoints = custom_target(
|
|||
libpanvk_files = files(
|
||||
'panvk_buffer.c',
|
||||
'panvk_cmd_buffer.c',
|
||||
'panvk_cmd_pool.c',
|
||||
'panvk_device.c',
|
||||
'panvk_device_memory.c',
|
||||
'panvk_descriptor_set.c',
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
*/
|
||||
|
||||
#include "panvk_buffer.h"
|
||||
#include "panvk_cmd_pool.h"
|
||||
#include "panvk_pipeline.h"
|
||||
#include "panvk_pipeline_layout.h"
|
||||
#include "panvk_private.h"
|
||||
|
|
@ -363,34 +364,6 @@ panvk_CmdSetStencilReference(VkCommandBuffer commandBuffer,
|
|||
cmdbuf->state.fs_rsd = 0;
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
panvk_CreateCommandPool(VkDevice _device,
|
||||
const VkCommandPoolCreateInfo *pCreateInfo,
|
||||
const VkAllocationCallbacks *pAllocator,
|
||||
VkCommandPool *pCmdPool)
|
||||
{
|
||||
VK_FROM_HANDLE(panvk_device, device, _device);
|
||||
struct panvk_cmd_pool *pool;
|
||||
|
||||
pool = vk_alloc2(&device->vk.alloc, pAllocator, sizeof(*pool), 8,
|
||||
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
||||
if (pool == NULL)
|
||||
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||
|
||||
VkResult result =
|
||||
vk_command_pool_init(&device->vk, &pool->vk, pCreateInfo, pAllocator);
|
||||
if (result != VK_SUCCESS) {
|
||||
vk_free2(&device->vk.alloc, pAllocator, pool);
|
||||
return result;
|
||||
}
|
||||
|
||||
panvk_bo_pool_init(&pool->desc_bo_pool);
|
||||
panvk_bo_pool_init(&pool->varying_bo_pool);
|
||||
panvk_bo_pool_init(&pool->tls_bo_pool);
|
||||
*pCmdPool = panvk_cmd_pool_to_handle(pool);
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
void
|
||||
panvk_cmd_preload_fb_after_batch_split(struct panvk_cmd_buffer *cmdbuf)
|
||||
{
|
||||
|
|
|
|||
57
src/panfrost/vulkan/panvk_cmd_pool.c
Normal file
57
src/panfrost/vulkan/panvk_cmd_pool.c
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
/*
|
||||
* Copyright © 2021 Collabora Ltd.
|
||||
*
|
||||
* Derived from tu_cmd_buffer.c which is:
|
||||
* Copyright © 2016 Red Hat.
|
||||
* Copyright © 2016 Bas Nieuwenhuizen
|
||||
* Copyright © 2015 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#include "panvk_cmd_pool.h"
|
||||
#include "panvk_private.h"
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
panvk_CreateCommandPool(VkDevice _device,
|
||||
const VkCommandPoolCreateInfo *pCreateInfo,
|
||||
const VkAllocationCallbacks *pAllocator,
|
||||
VkCommandPool *pCmdPool)
|
||||
{
|
||||
VK_FROM_HANDLE(panvk_device, device, _device);
|
||||
struct panvk_cmd_pool *pool;
|
||||
|
||||
pool = vk_alloc2(&device->vk.alloc, pAllocator, sizeof(*pool), 8,
|
||||
VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
|
||||
if (pool == NULL)
|
||||
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
|
||||
|
||||
VkResult result =
|
||||
vk_command_pool_init(&device->vk, &pool->vk, pCreateInfo, pAllocator);
|
||||
if (result != VK_SUCCESS) {
|
||||
vk_free2(&device->vk.alloc, pAllocator, pool);
|
||||
return result;
|
||||
}
|
||||
|
||||
panvk_bo_pool_init(&pool->desc_bo_pool);
|
||||
panvk_bo_pool_init(&pool->varying_bo_pool);
|
||||
panvk_bo_pool_init(&pool->tls_bo_pool);
|
||||
*pCmdPool = panvk_cmd_pool_to_handle(pool);
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL
|
||||
panvk_DestroyCommandPool(VkDevice _device, VkCommandPool commandPool,
|
||||
const VkAllocationCallbacks *pAllocator)
|
||||
{
|
||||
VK_FROM_HANDLE(panvk_device, device, _device);
|
||||
VK_FROM_HANDLE(panvk_cmd_pool, pool, commandPool);
|
||||
|
||||
vk_command_pool_finish(&pool->vk);
|
||||
|
||||
panvk_bo_pool_cleanup(&pool->desc_bo_pool);
|
||||
panvk_bo_pool_cleanup(&pool->varying_bo_pool);
|
||||
panvk_bo_pool_cleanup(&pool->tls_bo_pool);
|
||||
|
||||
vk_free2(&device->vk.alloc, pAllocator, pool);
|
||||
}
|
||||
23
src/panfrost/vulkan/panvk_cmd_pool.h
Normal file
23
src/panfrost/vulkan/panvk_cmd_pool.h
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* Copyright © 2021 Collabora Ltd.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#ifndef PANVK_CMD_POOL_H
|
||||
#define PANVK_CMD_POOL_H
|
||||
|
||||
#include "vk_command_pool.h"
|
||||
|
||||
#include "panvk_mempool.h"
|
||||
|
||||
struct panvk_cmd_pool {
|
||||
struct vk_command_pool vk;
|
||||
struct panvk_bo_pool desc_bo_pool;
|
||||
struct panvk_bo_pool varying_bo_pool;
|
||||
struct panvk_bo_pool tls_bo_pool;
|
||||
};
|
||||
|
||||
VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_cmd_pool, vk.base, VkCommandPool,
|
||||
VK_OBJECT_TYPE_COMMAND_POOL)
|
||||
|
||||
#endif
|
||||
|
|
@ -427,13 +427,6 @@ struct panvk_cmd_state {
|
|||
struct panvk_batch *batch;
|
||||
};
|
||||
|
||||
struct panvk_cmd_pool {
|
||||
struct vk_command_pool vk;
|
||||
struct panvk_bo_pool desc_bo_pool;
|
||||
struct panvk_bo_pool varying_bo_pool;
|
||||
struct panvk_bo_pool tls_bo_pool;
|
||||
};
|
||||
|
||||
struct panvk_cmd_bind_point_state {
|
||||
struct panvk_descriptor_state desc_state;
|
||||
const struct panvk_pipeline *pipeline;
|
||||
|
|
@ -476,9 +469,6 @@ VK_DEFINE_HANDLE_CASTS(panvk_physical_device, vk.base, VkPhysicalDevice,
|
|||
VK_OBJECT_TYPE_PHYSICAL_DEVICE)
|
||||
VK_DEFINE_HANDLE_CASTS(panvk_queue, vk.base, VkQueue, VK_OBJECT_TYPE_QUEUE)
|
||||
|
||||
VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_cmd_pool, vk.base, VkCommandPool,
|
||||
VK_OBJECT_TYPE_COMMAND_POOL)
|
||||
|
||||
#ifdef PAN_ARCH
|
||||
#include "panvk_vX_cmd_buffer.h"
|
||||
#include "panvk_vX_device.h"
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
#include "genxml/gen_macros.h"
|
||||
|
||||
#include "panvk_buffer.h"
|
||||
#include "panvk_cmd_pool.h"
|
||||
#include "panvk_event.h"
|
||||
#include "panvk_image.h"
|
||||
#include "panvk_image_view.h"
|
||||
|
|
@ -1608,22 +1609,6 @@ panvk_per_arch(BeginCommandBuffer)(VkCommandBuffer commandBuffer,
|
|||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL
|
||||
panvk_per_arch(DestroyCommandPool)(VkDevice _device, VkCommandPool commandPool,
|
||||
const VkAllocationCallbacks *pAllocator)
|
||||
{
|
||||
VK_FROM_HANDLE(panvk_device, device, _device);
|
||||
VK_FROM_HANDLE(panvk_cmd_pool, pool, commandPool);
|
||||
|
||||
vk_command_pool_finish(&pool->vk);
|
||||
|
||||
panvk_bo_pool_cleanup(&pool->desc_bo_pool);
|
||||
panvk_bo_pool_cleanup(&pool->varying_bo_pool);
|
||||
panvk_bo_pool_cleanup(&pool->tls_bo_pool);
|
||||
|
||||
vk_free2(&device->vk.alloc, pAllocator, pool);
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL
|
||||
panvk_per_arch(CmdDispatch)(VkCommandBuffer commandBuffer, uint32_t x,
|
||||
uint32_t y, uint32_t z)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue