panvk: Make panvk_cmd_buffer per-gen
The command buffer state is going to be an object containing per-gen descriptors. Instead of pretending we can have gen-agnostic helpers, let's merge everything in panvk_vX_cmd_buffer.c, and make panvk_cmd_buffer.h a per-gen file. We will split this into sub-files (panvk_cmd_draw, panvk_cmd_desc, ...) further down the road, so we can specialize only specific bits (like descriptor tables, the way we issue draw/dispatch jobs, etc). 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:

committed by
Marge Bot

parent
18e03803a7
commit
a790f77169
@@ -6,6 +6,10 @@
|
||||
#ifndef PANVK_CMD_BUFFER_H
|
||||
#define PANVK_CMD_BUFFER_H
|
||||
|
||||
#ifndef PAN_ARCH
|
||||
#error "PAN_ARCH must be defined"
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "vulkan/runtime/vk_command_buffer.h"
|
||||
@@ -22,12 +26,12 @@
|
||||
|
||||
#include "util/list.h"
|
||||
|
||||
#include "genxml/gen_macros.h"
|
||||
|
||||
#define MAX_BIND_POINTS 2 /* compute + graphics */
|
||||
#define MAX_VBS 16
|
||||
#define MAX_PUSH_CONSTANTS_SIZE 128
|
||||
|
||||
#define TILER_DESC_WORDS 56
|
||||
|
||||
struct panvk_batch {
|
||||
struct list_head node;
|
||||
struct util_dynarray jobs;
|
||||
@@ -47,8 +51,10 @@ struct panvk_batch {
|
||||
mali_ptr fragment_job;
|
||||
struct {
|
||||
struct pan_tiler_context ctx;
|
||||
struct panfrost_ptr descs;
|
||||
uint32_t templ[TILER_DESC_WORDS];
|
||||
struct panfrost_ptr heap_desc;
|
||||
struct panfrost_ptr ctx_desc;
|
||||
struct mali_tiler_heap_packed heap_templ;
|
||||
struct mali_tiler_context_packed ctx_templ;
|
||||
} tiler;
|
||||
struct pan_tls_info tlsinfo;
|
||||
unsigned wls_total_size;
|
||||
@@ -192,13 +198,11 @@ VK_DEFINE_HANDLE_CASTS(panvk_cmd_buffer, vk.base, VkCommandBuffer,
|
||||
#define panvk_cmd_get_desc_state(cmdbuf, bindpoint) \
|
||||
&(cmdbuf)->bind_points[VK_PIPELINE_BIND_POINT_##bindpoint].desc_state
|
||||
|
||||
struct panvk_batch *panvk_cmd_open_batch(struct panvk_cmd_buffer *cmdbuf);
|
||||
|
||||
void panvk_cmd_preload_fb_after_batch_split(struct panvk_cmd_buffer *cmdbuf);
|
||||
|
||||
#if PAN_ARCH
|
||||
extern const struct vk_command_buffer_ops panvk_per_arch(cmd_buffer_ops);
|
||||
|
||||
struct panvk_batch *
|
||||
panvk_per_arch(cmd_open_batch)(struct panvk_cmd_buffer *cmdbuf);
|
||||
|
||||
void panvk_per_arch(cmd_close_batch)(struct panvk_cmd_buffer *cmdbuf);
|
||||
|
||||
void panvk_per_arch(cmd_get_tiler_context)(struct panvk_cmd_buffer *cmdbuf,
|
||||
@@ -213,6 +217,5 @@ void panvk_per_arch(cmd_prepare_tiler_context)(struct panvk_cmd_buffer *cmdbuf);
|
||||
|
||||
void panvk_per_arch(emit_viewport)(const VkViewport *viewport,
|
||||
const VkRect2D *scissor, void *vpd);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user