panvk: Drop panvk_framebuffer

vk_framebuffer provides exactly the same thing, so let the core
implement the VkFramebuffer entry points for us.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28104>
This commit is contained in:
Boris Brezillon
2023-12-18 14:13:37 +01:00
parent 39204afde1
commit e7b68cdef1
5 changed files with 16 additions and 68 deletions
+11 -7
View File
@@ -33,6 +33,7 @@
#include "util/rounding.h"
#include "vk_format.h"
#include "vk_framebuffer.h"
VKAPI_ATTR void VKAPI_CALL
panvk_CmdBindVertexBuffers(VkCommandBuffer commandBuffer, uint32_t firstBinding,
@@ -424,9 +425,8 @@ panvk_cmd_fb_info_set_subpass(struct panvk_cmd_buffer *cmdbuf)
{
const struct panvk_subpass *subpass = cmdbuf->state.subpass;
struct pan_fb_info *fbinfo = &cmdbuf->state.fb.info;
const struct panvk_framebuffer *fb = cmdbuf->state.framebuffer;
const struct vk_framebuffer *fb = cmdbuf->state.framebuffer;
const struct panvk_clear_value *clears = cmdbuf->state.clear;
struct panvk_image_view *view;
fbinfo->nr_samples = 1;
fbinfo->rt_count = subpass->color_count;
@@ -435,9 +435,12 @@ panvk_cmd_fb_info_set_subpass(struct panvk_cmd_buffer *cmdbuf)
for (unsigned cb = 0; cb < subpass->color_count; cb++) {
int idx = subpass->color_attachments[cb].idx;
view = idx != VK_ATTACHMENT_UNUSED ? fb->attachments[idx].iview : NULL;
if (!view)
if (idx == VK_ATTACHMENT_UNUSED)
continue;
VK_FROM_HANDLE(panvk_image_view, view, fb->attachments[idx]);
fbinfo->rts[cb].view = &view->pview;
fbinfo->rts[cb].clear = subpass->color_attachments[cb].clear;
fbinfo->rts[cb].preload = subpass->color_attachments[cb].preload;
@@ -450,7 +453,8 @@ panvk_cmd_fb_info_set_subpass(struct panvk_cmd_buffer *cmdbuf)
}
if (subpass->zs_attachment.idx != VK_ATTACHMENT_UNUSED) {
view = fb->attachments[subpass->zs_attachment.idx].iview;
VK_FROM_HANDLE(panvk_image_view, view,
fb->attachments[subpass->zs_attachment.idx]);
const struct util_format_description *fdesc =
util_format_description(view->pview.format);
@@ -478,7 +482,7 @@ void
panvk_cmd_fb_info_init(struct panvk_cmd_buffer *cmdbuf)
{
struct pan_fb_info *fbinfo = &cmdbuf->state.fb.info;
const struct panvk_framebuffer *fb = cmdbuf->state.framebuffer;
const struct vk_framebuffer *fb = cmdbuf->state.framebuffer;
memset(cmdbuf->state.fb.crc_valid, 0, sizeof(cmdbuf->state.fb.crc_valid));
@@ -499,7 +503,7 @@ panvk_CmdBeginRenderPass2(VkCommandBuffer commandBuffer,
{
VK_FROM_HANDLE(panvk_cmd_buffer, cmdbuf, commandBuffer);
VK_FROM_HANDLE(panvk_render_pass, pass, pRenderPassBegin->renderPass);
VK_FROM_HANDLE(panvk_framebuffer, fb, pRenderPassBegin->framebuffer);
VK_FROM_HANDLE(vk_framebuffer, fb, pRenderPassBegin->framebuffer);
cmdbuf->state.pass = pass;
cmdbuf->state.subpass = pass->subpasses;
-1
View File
@@ -42,7 +42,6 @@ struct panfrost_ptr;
struct pan_pool;
union panvk_sysval_data;
struct panvk_framebuffer;
struct panvk_cmd_state;
struct panvk_compute_dim;
struct panvk_device;
-43
View File
@@ -1660,49 +1660,6 @@ panvk_DestroyBuffer(VkDevice _device, VkBuffer _buffer,
vk_buffer_destroy(&device->vk, pAllocator, &buffer->vk);
}
VKAPI_ATTR VkResult VKAPI_CALL
panvk_CreateFramebuffer(VkDevice _device,
const VkFramebufferCreateInfo *pCreateInfo,
const VkAllocationCallbacks *pAllocator,
VkFramebuffer *pFramebuffer)
{
VK_FROM_HANDLE(panvk_device, device, _device);
struct panvk_framebuffer *framebuffer;
assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO);
size_t size = sizeof(*framebuffer) + sizeof(struct panvk_attachment_info) *
pCreateInfo->attachmentCount;
framebuffer = vk_object_alloc(&device->vk, pAllocator, size,
VK_OBJECT_TYPE_FRAMEBUFFER);
if (framebuffer == NULL)
return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY);
framebuffer->attachment_count = pCreateInfo->attachmentCount;
framebuffer->width = pCreateInfo->width;
framebuffer->height = pCreateInfo->height;
framebuffer->layers = pCreateInfo->layers;
for (uint32_t i = 0; i < pCreateInfo->attachmentCount; i++) {
VkImageView _iview = pCreateInfo->pAttachments[i];
struct panvk_image_view *iview = panvk_image_view_from_handle(_iview);
framebuffer->attachments[i].iview = iview;
}
*pFramebuffer = panvk_framebuffer_to_handle(framebuffer);
return VK_SUCCESS;
}
VKAPI_ATTR void VKAPI_CALL
panvk_DestroyFramebuffer(VkDevice _device, VkFramebuffer _fb,
const VkAllocationCallbacks *pAllocator)
{
VK_FROM_HANDLE(panvk_device, device, _device);
VK_FROM_HANDLE(panvk_framebuffer, fb, _fb);
if (fb)
vk_object_free(&device->vk, pAllocator, fb);
}
VKAPI_ATTR void VKAPI_CALL
panvk_DestroySampler(VkDevice _device, VkSampler _sampler,
const VkAllocationCallbacks *pAllocator)
+2 -15
View File
@@ -305,7 +305,7 @@ struct panvk_batch {
struct util_dynarray event_ops;
struct pan_jc jc;
struct {
const struct panvk_framebuffer *info;
const struct vk_framebuffer *info;
struct panfrost_ptr desc;
} fb;
struct {
@@ -754,7 +754,7 @@ struct panvk_cmd_state {
const struct panvk_render_pass *pass;
const struct panvk_subpass *subpass;
const struct panvk_framebuffer *framebuffer;
const struct vk_framebuffer *framebuffer;
VkRect2D render_area;
struct panvk_clear_value *clear;
@@ -993,17 +993,6 @@ struct panvk_attachment_info {
struct panvk_image_view *iview;
};
struct panvk_framebuffer {
struct vk_object_base base;
uint32_t width;
uint32_t height;
uint32_t layers;
uint32_t attachment_count;
struct panvk_attachment_info attachments[0];
};
struct panvk_clear_value {
union {
uint32_t color[4];
@@ -1082,8 +1071,6 @@ VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_descriptor_set_layout, vk.base,
VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_device_memory, base, VkDeviceMemory,
VK_OBJECT_TYPE_DEVICE_MEMORY)
VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_event, base, VkEvent, VK_OBJECT_TYPE_EVENT)
VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_framebuffer, base, VkFramebuffer,
VK_OBJECT_TYPE_FRAMEBUFFER)
VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_image, vk.base, VkImage,
VK_OBJECT_TYPE_IMAGE)
VK_DEFINE_NONDISP_HANDLE_CASTS(panvk_image_view, vk.base, VkImageView,
+3 -2
View File
@@ -34,6 +34,7 @@
#include "panvk_private.h"
#include "vk_drm_syncobj.h"
#include "vk_framebuffer.h"
static void
panvk_queue_submit_batch(struct panvk_queue *queue, struct panvk_batch *batch,
@@ -245,8 +246,8 @@ panvk_per_arch(queue_submit)(struct vk_queue *vk_queue,
if (batch->fb.info) {
for (unsigned i = 0; i < batch->fb.info->attachment_count; i++) {
struct panvk_image_view *iview =
batch->fb.info->attachments[i].iview;
VK_FROM_HANDLE(panvk_image_view, iview,
batch->fb.info->attachments[i]);
struct panvk_image *img =
container_of(iview->vk.image, struct panvk_image, vk);