xref: /aosp_15_r20/external/mesa3d/src/panfrost/vulkan/panvk_cmd_meta.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1 /*
2  * Copyright © 2021 Collabora Ltd.
3  * SPDX-License-Identifier: MIT
4  */
5 
6 #ifndef PANVK_CMD_META_H
7 #define PANVK_CMD_META_H
8 
9 #ifndef PAN_ARCH
10 #error "PAN_ARCH must be defined"
11 #endif
12 
13 #include "panvk_cmd_buffer.h"
14 #include "panvk_cmd_desc_state.h"
15 #include "panvk_cmd_push_constant.h"
16 #include "panvk_descriptor_set.h"
17 
18 struct panvk_shader;
19 
20 struct panvk_cmd_meta_compute_save_ctx {
21    struct {
22       const struct panvk_shader *shader;
23       struct panvk_shader_desc_state desc;
24    } cs;
25    const struct panvk_descriptor_set *set0;
26    struct {
27       struct panvk_opaque_desc desc_storage[MAX_PUSH_DESCS];
28       mali_ptr descs_dev_addr;
29       uint32_t desc_count;
30    } push_set0;
31    struct panvk_push_constant_state push_constants;
32 };
33 
34 void panvk_per_arch(cmd_meta_compute_start)(
35    struct panvk_cmd_buffer *cmdbuf,
36    struct panvk_cmd_meta_compute_save_ctx *save_ctx);
37 
38 void panvk_per_arch(cmd_meta_compute_end)(
39    struct panvk_cmd_buffer *cmdbuf,
40    const struct panvk_cmd_meta_compute_save_ctx *save_ctx);
41 
42 struct panvk_cmd_meta_graphics_save_ctx {
43    const struct panvk_graphics_pipeline *pipeline;
44    const struct panvk_descriptor_set *set0;
45    struct {
46       struct panvk_opaque_desc desc_storage[MAX_PUSH_DESCS];
47       mali_ptr descs_dev_addr;
48       uint32_t desc_count;
49    } push_set0;
50    struct panvk_push_constant_state push_constants;
51    struct panvk_attrib_buf vb0;
52 
53    struct {
54       struct vk_dynamic_graphics_state all;
55       struct vk_vertex_input_state vi;
56       struct vk_sample_locations_state sl;
57    } dyn_state;
58 
59    struct {
60       const struct panvk_shader *shader;
61       struct panvk_shader_desc_state desc;
62    } fs;
63 
64    struct {
65       const struct panvk_shader *shader;
66       struct panvk_shader_desc_state desc;
67    } vs;
68 };
69 
70 void panvk_per_arch(cmd_meta_gfx_start)(
71    struct panvk_cmd_buffer *cmdbuf,
72    struct panvk_cmd_meta_graphics_save_ctx *save_ctx);
73 
74 void panvk_per_arch(cmd_meta_gfx_end)(
75    struct panvk_cmd_buffer *cmdbuf,
76    const struct panvk_cmd_meta_graphics_save_ctx *save_ctx);
77 
78 #endif
79