• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright © 2024 Collabora Ltd.
3  * SPDX-License-Identifier: MIT
4  */
5 
6 #ifndef PANVK_CMD_DESC_STATE_H
7 #define PANVK_CMD_DESC_STATE_H
8 
9 #ifndef PAN_ARCH
10 #error "PAN_ARCH must be defined"
11 #endif
12 
13 #include <stdint.h>
14 
15 #include "genxml/gen_macros.h"
16 
17 #include "panvk_cmd_pool.h"
18 #include "panvk_descriptor_set.h"
19 #include "panvk_macros.h"
20 #include "panvk_shader.h"
21 
22 #include "vk_alloc.h"
23 #include "vk_command_buffer.h"
24 #include "vk_command_pool.h"
25 
26 #include "pan_pool.h"
27 
28 struct panvk_cmd_buffer;
29 
30 struct panvk_shader_desc_state {
31 #if PAN_ARCH <= 7
32    uint64_t tables[PANVK_BIFROST_DESC_TABLE_COUNT];
33    uint64_t img_attrib_table;
34    uint64_t dyn_ssbos;
35 #else
36    struct {
37       uint64_t dev_addr;
38       uint32_t size;
39    } driver_set;
40    uint64_t res_table;
41 #endif
42 };
43 
44 struct panvk_push_set {
45    struct panvk_cmd_pool_obj base;
46    struct panvk_descriptor_set set;
47    struct panvk_opaque_desc descs[MAX_PUSH_DESCS];
48 };
49 
50 struct panvk_descriptor_state {
51    const struct panvk_descriptor_set *sets[MAX_SETS];
52    struct panvk_descriptor_set *push_sets[MAX_SETS];
53    BITSET_DECLARE(dirty_push_sets, MAX_SETS);
54 
55    uint32_t dyn_buf_offsets[MAX_SETS][MAX_DYNAMIC_BUFFERS];
56 };
57 
58 #if PAN_ARCH <= 7
59 VkResult panvk_per_arch(cmd_prepare_dyn_ssbos)(
60    struct panvk_cmd_buffer *cmdbuf,
61    const struct panvk_descriptor_state *desc_state,
62    const struct panvk_shader *shader,
63    struct panvk_shader_desc_state *shader_desc_state);
64 
65 VkResult panvk_per_arch(cmd_prepare_shader_desc_tables)(
66    struct panvk_cmd_buffer *cmdbuf,
67    const struct panvk_descriptor_state *desc_state,
68    const struct panvk_shader *shader,
69    struct panvk_shader_desc_state *shader_desc_state);
70 #else
71 void panvk_per_arch(cmd_fill_dyn_bufs)(
72    const struct panvk_descriptor_state *desc_state,
73    const struct panvk_shader *shader, struct mali_buffer_packed *buffers);
74 
75 VkResult panvk_per_arch(cmd_prepare_shader_res_table)(
76    struct panvk_cmd_buffer *cmdbuf,
77    const struct panvk_descriptor_state *desc_state,
78    const struct panvk_shader *shader,
79    struct panvk_shader_desc_state *shader_desc_state);
80 #endif
81 
82 VkResult panvk_per_arch(cmd_prepare_push_descs)(
83    struct panvk_cmd_buffer *cmdbuf, struct panvk_descriptor_state *desc_state,
84    uint32_t used_set_mask);
85 
86 #endif
87