2025-09-02 17:32:41 +02:00
|
|
|
/*
|
|
|
|
|
* Copyright © 2022 Imagination Technologies Ltd.
|
|
|
|
|
*
|
|
|
|
|
* based in part on anv driver which is:
|
|
|
|
|
* Copyright © 2015 Intel Corporation
|
|
|
|
|
*
|
|
|
|
|
* based in part on radv driver which is:
|
|
|
|
|
* Copyright © 2016 Red Hat.
|
|
|
|
|
* Copyright © 2016 Bas Nieuwenhuizen
|
|
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: MIT
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#ifndef PVR_FRAMEBUFFER_H
|
|
|
|
|
#define PVR_FRAMEBUFFER_H
|
|
|
|
|
|
2025-11-24 11:00:19 +01:00
|
|
|
#include <pthread.h>
|
|
|
|
|
|
2025-12-12 11:07:56 +01:00
|
|
|
#include "util/list.h"
|
|
|
|
|
|
2025-11-24 11:00:19 +01:00
|
|
|
#include "vk_object.h"
|
|
|
|
|
|
|
|
|
|
#include "pvr_limits.h"
|
|
|
|
|
|
2025-09-02 17:32:41 +02:00
|
|
|
struct pvr_render_target {
|
|
|
|
|
struct pvr_rt_dataset *rt_dataset[PVR_MAX_MULTIVIEW];
|
|
|
|
|
|
|
|
|
|
pthread_mutex_t mutex;
|
|
|
|
|
|
|
|
|
|
uint32_t valid_mask;
|
|
|
|
|
};
|
|
|
|
|
|
2025-09-18 10:50:57 +01:00
|
|
|
struct pvr_render_state {
|
2025-11-13 10:54:49 +00:00
|
|
|
struct list_head link;
|
|
|
|
|
|
2025-09-18 10:50:57 +01:00
|
|
|
uint32_t width;
|
|
|
|
|
uint32_t height;
|
|
|
|
|
uint32_t layers;
|
|
|
|
|
|
|
|
|
|
uint32_t width_alignment;
|
|
|
|
|
uint32_t height_alignment;
|
|
|
|
|
|
|
|
|
|
/* Derived and other state. */
|
|
|
|
|
struct pvr_suballoc_bo *ppp_state_bo;
|
|
|
|
|
/* PPP state size in dwords. */
|
|
|
|
|
size_t ppp_state_size;
|
|
|
|
|
|
|
|
|
|
uint32_t render_targets_count;
|
|
|
|
|
struct pvr_render_target *render_targets;
|
|
|
|
|
|
|
|
|
|
uint64_t scratch_buffer_size;
|
|
|
|
|
struct pvr_spm_scratch_buffer *scratch_buffer;
|
|
|
|
|
|
|
|
|
|
uint32_t render_count;
|
|
|
|
|
struct pvr_spm_eot_state *spm_eot_state_per_render;
|
|
|
|
|
struct pvr_spm_bgobj_state *spm_bgobj_state_per_render;
|
|
|
|
|
};
|
|
|
|
|
|
2025-09-02 17:32:41 +02:00
|
|
|
struct pvr_framebuffer {
|
|
|
|
|
struct vk_object_base base;
|
|
|
|
|
|
2025-09-18 10:50:57 +01:00
|
|
|
uint32_t attachment_count;
|
|
|
|
|
struct pvr_image_view **attachments;
|
|
|
|
|
struct pvr_render_state *rstate;
|
2025-09-02 17:32:41 +02:00
|
|
|
};
|
|
|
|
|
|
2025-09-18 10:50:57 +01:00
|
|
|
struct pvr_device;
|
|
|
|
|
struct pvr_renderpass_hwsetup_render;
|
|
|
|
|
|
2025-12-08 11:18:44 +01:00
|
|
|
VkResult
|
|
|
|
|
pvr_render_state_setup(struct pvr_device *device,
|
|
|
|
|
const VkAllocationCallbacks *pAllocator,
|
|
|
|
|
struct pvr_render_state *rstate,
|
|
|
|
|
uint32_t render_count,
|
|
|
|
|
const struct pvr_renderpass_hwsetup_render *renders);
|
2025-09-18 10:50:57 +01:00
|
|
|
|
|
|
|
|
void pvr_render_state_cleanup(struct pvr_device *device,
|
|
|
|
|
const struct pvr_render_state *rstate);
|
|
|
|
|
|
2025-09-02 17:32:41 +02:00
|
|
|
VK_DEFINE_NONDISP_HANDLE_CASTS(pvr_framebuffer,
|
|
|
|
|
base,
|
|
|
|
|
VkFramebuffer,
|
|
|
|
|
VK_OBJECT_TYPE_FRAMEBUFFER)
|
|
|
|
|
|
|
|
|
|
#endif /* PVR_FRAMEBUFFER_H */
|