About Social Code
aboutsummaryrefslogtreecommitdiff
path: root/src/frygon/vulkan/fgvk_cmd_buffer.h
blob: 151ed6311662718442bd6445964ac58af8a87cd3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*
 * Copyright © 2025 Lucas Francisco Fryzek
 * SPDX-License-Identifier: MIT
 */
#ifndef FGVK_CMD_BUFFER_H
#define FGVK_CMD_BUFFER_H 1

#include "fgvk_private.h"

#include "vk_command_buffer.h"
#include "vk_shader.h"

struct fgvk_graphics_state {
   struct vk_vertex_input_state _dynamic_vi;
   struct vk_sample_locations_state _dynamic_sl;
};

struct fgvk_cmd_buffer {
   struct vk_command_buffer vk;

   struct fgvk_cmd_state {
      struct fgvk_graphics_state gfx;
   } state;
};

VK_DEFINE_HANDLE_CASTS(fgvk_cmd_buffer, vk.base, VkCommandBuffer,
                       VK_OBJECT_TYPE_COMMAND_BUFFER)

static inline struct fgvk_cmd_pool *
fgvk_cmd_buffer_pool(struct fgvk_cmd_buffer *cmd)
{
   return (struct fgvk_cmd_pool *)cmd->vk.pool;
}

extern const struct vk_command_buffer_ops fgvk_cmd_buffer_ops;

void fgvk_cmd_bind_shaders(struct vk_command_buffer *vk_cmd,
                           uint32_t stage_count,
                           const mesa_shader_stage *stages,
                           struct vk_shader ** const shaders);

#endif