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