xref: /aosp_15_r20/external/mesa3d/src/intel/vulkan/anv_genX.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Copyright © 2016 Intel Corporation
3*61046927SAndroid Build Coastguard Worker  *
4*61046927SAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a
5*61046927SAndroid Build Coastguard Worker  * copy of this software and associated documentation files (the "Software"),
6*61046927SAndroid Build Coastguard Worker  * to deal in the Software without restriction, including without limitation
7*61046927SAndroid Build Coastguard Worker  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8*61046927SAndroid Build Coastguard Worker  * and/or sell copies of the Software, and to permit persons to whom the
9*61046927SAndroid Build Coastguard Worker  * Software is furnished to do so, subject to the following conditions:
10*61046927SAndroid Build Coastguard Worker  *
11*61046927SAndroid Build Coastguard Worker  * The above copyright notice and this permission notice (including the next
12*61046927SAndroid Build Coastguard Worker  * paragraph) shall be included in all copies or substantial portions of the
13*61046927SAndroid Build Coastguard Worker  * Software.
14*61046927SAndroid Build Coastguard Worker  *
15*61046927SAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16*61046927SAndroid Build Coastguard Worker  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17*61046927SAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18*61046927SAndroid Build Coastguard Worker  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19*61046927SAndroid Build Coastguard Worker  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20*61046927SAndroid Build Coastguard Worker  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21*61046927SAndroid Build Coastguard Worker  * IN THE SOFTWARE.
22*61046927SAndroid Build Coastguard Worker  */
23*61046927SAndroid Build Coastguard Worker 
24*61046927SAndroid Build Coastguard Worker /*
25*61046927SAndroid Build Coastguard Worker  * NOTE: The header can be included multiple times, from the same file.
26*61046927SAndroid Build Coastguard Worker  */
27*61046927SAndroid Build Coastguard Worker 
28*61046927SAndroid Build Coastguard Worker /*
29*61046927SAndroid Build Coastguard Worker  * Gen-specific function declarations.  This header must *not* be included
30*61046927SAndroid Build Coastguard Worker  * directly.  Instead, it is included multiple times by anv_private.h.
31*61046927SAndroid Build Coastguard Worker  *
32*61046927SAndroid Build Coastguard Worker  * In this header file, the usual genx() macro is available.
33*61046927SAndroid Build Coastguard Worker  */
34*61046927SAndroid Build Coastguard Worker 
35*61046927SAndroid Build Coastguard Worker #ifndef ANV_PRIVATE_H
36*61046927SAndroid Build Coastguard Worker #error This file is included by means other than anv_private.h
37*61046927SAndroid Build Coastguard Worker #endif
38*61046927SAndroid Build Coastguard Worker 
39*61046927SAndroid Build Coastguard Worker struct intel_sample_positions;
40*61046927SAndroid Build Coastguard Worker struct intel_urb_config;
41*61046927SAndroid Build Coastguard Worker struct anv_async_submit;
42*61046927SAndroid Build Coastguard Worker struct anv_embedded_sampler;
43*61046927SAndroid Build Coastguard Worker struct anv_pipeline_embedded_sampler_binding;
44*61046927SAndroid Build Coastguard Worker struct anv_trtt_bind;
45*61046927SAndroid Build Coastguard Worker 
46*61046927SAndroid Build Coastguard Worker typedef struct nir_builder nir_builder;
47*61046927SAndroid Build Coastguard Worker typedef struct nir_shader nir_shader;
48*61046927SAndroid Build Coastguard Worker 
49*61046927SAndroid Build Coastguard Worker extern const uint32_t genX(vk_to_intel_cullmode)[];
50*61046927SAndroid Build Coastguard Worker 
51*61046927SAndroid Build Coastguard Worker extern const uint32_t genX(vk_to_intel_front_face)[];
52*61046927SAndroid Build Coastguard Worker 
53*61046927SAndroid Build Coastguard Worker extern const uint32_t genX(vk_to_intel_primitive_type)[];
54*61046927SAndroid Build Coastguard Worker 
55*61046927SAndroid Build Coastguard Worker extern const uint32_t genX(vk_to_intel_compare_op)[];
56*61046927SAndroid Build Coastguard Worker 
57*61046927SAndroid Build Coastguard Worker extern const uint32_t genX(vk_to_intel_stencil_op)[];
58*61046927SAndroid Build Coastguard Worker 
59*61046927SAndroid Build Coastguard Worker extern const uint32_t genX(vk_to_intel_logic_op)[];
60*61046927SAndroid Build Coastguard Worker 
61*61046927SAndroid Build Coastguard Worker extern const uint32_t genX(vk_to_intel_fillmode)[];
62*61046927SAndroid Build Coastguard Worker 
63*61046927SAndroid Build Coastguard Worker void genX(init_physical_device_state)(struct anv_physical_device *device);
64*61046927SAndroid Build Coastguard Worker 
65*61046927SAndroid Build Coastguard Worker VkResult genX(init_device_state)(struct anv_device *device);
66*61046927SAndroid Build Coastguard Worker 
67*61046927SAndroid Build Coastguard Worker void genX(init_cps_device_state)(struct anv_device *device);
68*61046927SAndroid Build Coastguard Worker 
69*61046927SAndroid Build Coastguard Worker nir_shader *genX(load_libanv_shader)(struct anv_device *device, void *mem_ctx);
70*61046927SAndroid Build Coastguard Worker 
71*61046927SAndroid Build Coastguard Worker uint32_t genX(call_internal_shader)(nir_builder *b,
72*61046927SAndroid Build Coastguard Worker                                     enum anv_internal_kernel_name shader_name);
73*61046927SAndroid Build Coastguard Worker 
74*61046927SAndroid Build Coastguard Worker void
75*61046927SAndroid Build Coastguard Worker genX(set_fast_clear_state)(struct anv_cmd_buffer *cmd_buffer,
76*61046927SAndroid Build Coastguard Worker                            const struct anv_image *image,
77*61046927SAndroid Build Coastguard Worker                            const enum isl_format format,
78*61046927SAndroid Build Coastguard Worker                            union isl_color_value clear_color);
79*61046927SAndroid Build Coastguard Worker 
80*61046927SAndroid Build Coastguard Worker void
81*61046927SAndroid Build Coastguard Worker genX(load_image_clear_color)(struct anv_cmd_buffer *cmd_buffer,
82*61046927SAndroid Build Coastguard Worker                              struct anv_state surface_state,
83*61046927SAndroid Build Coastguard Worker                              const struct anv_image *image);
84*61046927SAndroid Build Coastguard Worker 
85*61046927SAndroid Build Coastguard Worker void genX(cmd_buffer_emit_bt_pool_base_address)(struct anv_cmd_buffer *cmd_buffer);
86*61046927SAndroid Build Coastguard Worker 
87*61046927SAndroid Build Coastguard Worker void genX(cmd_buffer_emit_state_base_address)(struct anv_cmd_buffer *cmd_buffer);
88*61046927SAndroid Build Coastguard Worker 
89*61046927SAndroid Build Coastguard Worker void genX(cmd_buffer_apply_pipe_flushes)(struct anv_cmd_buffer *cmd_buffer);
90*61046927SAndroid Build Coastguard Worker 
91*61046927SAndroid Build Coastguard Worker void
92*61046927SAndroid Build Coastguard Worker genX(cmd_buffer_update_color_aux_op)(struct anv_cmd_buffer *cmd_buffer,
93*61046927SAndroid Build Coastguard Worker                                      enum isl_aux_op aux_op);
94*61046927SAndroid Build Coastguard Worker 
95*61046927SAndroid Build Coastguard Worker void genX(cmd_buffer_emit_gfx12_depth_wa)(struct anv_cmd_buffer *cmd_buffer,
96*61046927SAndroid Build Coastguard Worker                                           const struct isl_surf *surf);
97*61046927SAndroid Build Coastguard Worker 
98*61046927SAndroid Build Coastguard Worker void genX(cmd_buffer_set_binding_for_gfx8_vb_flush)(struct anv_cmd_buffer *cmd_buffer,
99*61046927SAndroid Build Coastguard Worker                                                     int vb_index,
100*61046927SAndroid Build Coastguard Worker                                                     struct anv_address vb_address,
101*61046927SAndroid Build Coastguard Worker                                                     uint32_t vb_size);
102*61046927SAndroid Build Coastguard Worker void genX(cmd_buffer_update_dirty_vbs_for_gfx8_vb_flush)(struct anv_cmd_buffer *cmd_buffer,
103*61046927SAndroid Build Coastguard Worker                                                          uint32_t access_type,
104*61046927SAndroid Build Coastguard Worker                                                          uint64_t vb_used);
105*61046927SAndroid Build Coastguard Worker 
106*61046927SAndroid Build Coastguard Worker void genX(cmd_buffer_emit_hashing_mode)(struct anv_cmd_buffer *cmd_buffer,
107*61046927SAndroid Build Coastguard Worker                                         unsigned width, unsigned height,
108*61046927SAndroid Build Coastguard Worker                                         unsigned scale);
109*61046927SAndroid Build Coastguard Worker 
110*61046927SAndroid Build Coastguard Worker void genX(urb_workaround)(struct anv_cmd_buffer *cmd_buffer,
111*61046927SAndroid Build Coastguard Worker                           const struct intel_urb_config *urb_cfg);
112*61046927SAndroid Build Coastguard Worker 
113*61046927SAndroid Build Coastguard Worker void genX(flush_pipeline_select_3d)(struct anv_cmd_buffer *cmd_buffer);
114*61046927SAndroid Build Coastguard Worker void genX(flush_pipeline_select_gpgpu)(struct anv_cmd_buffer *cmd_buffer);
115*61046927SAndroid Build Coastguard Worker void genX(emit_pipeline_select)(struct anv_batch *batch, uint32_t pipeline,
116*61046927SAndroid Build Coastguard Worker                                 const struct anv_device *device);
117*61046927SAndroid Build Coastguard Worker 
118*61046927SAndroid Build Coastguard Worker void genX(apply_task_urb_workaround)(struct anv_cmd_buffer *cmd_buffer);
119*61046927SAndroid Build Coastguard Worker 
120*61046927SAndroid Build Coastguard Worker void genX(emit_vertex_input)(struct anv_batch *batch,
121*61046927SAndroid Build Coastguard Worker                              uint32_t *vertex_element_dws,
122*61046927SAndroid Build Coastguard Worker                              struct anv_graphics_pipeline *pipeline,
123*61046927SAndroid Build Coastguard Worker                              const struct vk_vertex_input_state *vi,
124*61046927SAndroid Build Coastguard Worker                              bool emit_in_pipeline);
125*61046927SAndroid Build Coastguard Worker 
126*61046927SAndroid Build Coastguard Worker enum anv_pipe_bits
127*61046927SAndroid Build Coastguard Worker genX(emit_apply_pipe_flushes)(struct anv_batch *batch,
128*61046927SAndroid Build Coastguard Worker                               struct anv_device *device,
129*61046927SAndroid Build Coastguard Worker                               uint32_t current_pipeline,
130*61046927SAndroid Build Coastguard Worker                               enum anv_pipe_bits bits,
131*61046927SAndroid Build Coastguard Worker                               enum anv_pipe_bits *emitted_flush_bits);
132*61046927SAndroid Build Coastguard Worker void
133*61046927SAndroid Build Coastguard Worker genX(invalidate_aux_map)(struct anv_batch *batch,
134*61046927SAndroid Build Coastguard Worker                          struct anv_device *device,
135*61046927SAndroid Build Coastguard Worker                          enum intel_engine_class engine_class,
136*61046927SAndroid Build Coastguard Worker                          enum anv_pipe_bits bits);
137*61046927SAndroid Build Coastguard Worker 
138*61046927SAndroid Build Coastguard Worker #if INTEL_WA_14018283232_GFX_VER
139*61046927SAndroid Build Coastguard Worker void genX(batch_emit_wa_14018283232)(struct anv_batch *batch);
140*61046927SAndroid Build Coastguard Worker 
141*61046927SAndroid Build Coastguard Worker static inline void
genX(cmd_buffer_ensure_wa_14018283232)142*61046927SAndroid Build Coastguard Worker genX(cmd_buffer_ensure_wa_14018283232)(struct anv_cmd_buffer *cmd_buffer,
143*61046927SAndroid Build Coastguard Worker                                        bool toggle)
144*61046927SAndroid Build Coastguard Worker {
145*61046927SAndroid Build Coastguard Worker    struct anv_gfx_dynamic_state *hw_state =
146*61046927SAndroid Build Coastguard Worker       &cmd_buffer->state.gfx.dyn_state;
147*61046927SAndroid Build Coastguard Worker    if (intel_needs_workaround(cmd_buffer->device->info, 14018283232) &&
148*61046927SAndroid Build Coastguard Worker        hw_state->wa_14018283232_toggle != toggle) {
149*61046927SAndroid Build Coastguard Worker       hw_state->wa_14018283232_toggle = toggle;
150*61046927SAndroid Build Coastguard Worker       BITSET_SET(hw_state->dirty, ANV_GFX_STATE_WA_14018283232);
151*61046927SAndroid Build Coastguard Worker       genX(batch_emit_wa_14018283232)(&cmd_buffer->batch);
152*61046927SAndroid Build Coastguard Worker    }
153*61046927SAndroid Build Coastguard Worker }
154*61046927SAndroid Build Coastguard Worker #endif
155*61046927SAndroid Build Coastguard Worker 
156*61046927SAndroid Build Coastguard Worker static inline bool
genX(cmd_buffer_set_coarse_pixel_active)157*61046927SAndroid Build Coastguard Worker genX(cmd_buffer_set_coarse_pixel_active)(struct anv_cmd_buffer *cmd_buffer,
158*61046927SAndroid Build Coastguard Worker                                          enum anv_coarse_pixel_state state)
159*61046927SAndroid Build Coastguard Worker {
160*61046927SAndroid Build Coastguard Worker #if INTEL_WA_18038825448_GFX_VER
161*61046927SAndroid Build Coastguard Worker    struct anv_cmd_graphics_state *gfx =
162*61046927SAndroid Build Coastguard Worker       &cmd_buffer->state.gfx;
163*61046927SAndroid Build Coastguard Worker    if (intel_needs_workaround(cmd_buffer->device->info, 18038825448) &&
164*61046927SAndroid Build Coastguard Worker        gfx->coarse_pixel_active != state) {
165*61046927SAndroid Build Coastguard Worker       gfx->coarse_pixel_active = state;
166*61046927SAndroid Build Coastguard Worker       gfx->dirty |= ANV_CMD_DIRTY_COARSE_PIXEL_ACTIVE;
167*61046927SAndroid Build Coastguard Worker       return true;
168*61046927SAndroid Build Coastguard Worker    }
169*61046927SAndroid Build Coastguard Worker    return false;
170*61046927SAndroid Build Coastguard Worker #else
171*61046927SAndroid Build Coastguard Worker    return false;
172*61046927SAndroid Build Coastguard Worker #endif
173*61046927SAndroid Build Coastguard Worker }
174*61046927SAndroid Build Coastguard Worker 
175*61046927SAndroid Build Coastguard Worker void genX(emit_so_memcpy_init)(struct anv_memcpy_state *state,
176*61046927SAndroid Build Coastguard Worker                                struct anv_device *device,
177*61046927SAndroid Build Coastguard Worker                                struct anv_cmd_buffer *cmd_buffer,
178*61046927SAndroid Build Coastguard Worker                                struct anv_batch *batch);
179*61046927SAndroid Build Coastguard Worker 
180*61046927SAndroid Build Coastguard Worker void genX(emit_so_memcpy_fini)(struct anv_memcpy_state *state);
181*61046927SAndroid Build Coastguard Worker 
182*61046927SAndroid Build Coastguard Worker void genX(emit_so_memcpy_end)(struct anv_memcpy_state *state);
183*61046927SAndroid Build Coastguard Worker 
184*61046927SAndroid Build Coastguard Worker void genX(emit_so_memcpy)(struct anv_memcpy_state *state,
185*61046927SAndroid Build Coastguard Worker                           struct anv_address dst, struct anv_address src,
186*61046927SAndroid Build Coastguard Worker                           uint32_t size);
187*61046927SAndroid Build Coastguard Worker 
188*61046927SAndroid Build Coastguard Worker void genX(emit_l3_config)(struct anv_batch *batch,
189*61046927SAndroid Build Coastguard Worker                           const struct anv_device *device,
190*61046927SAndroid Build Coastguard Worker                           const struct intel_l3_config *cfg);
191*61046927SAndroid Build Coastguard Worker 
192*61046927SAndroid Build Coastguard Worker void genX(cmd_buffer_config_l3)(struct anv_cmd_buffer *cmd_buffer,
193*61046927SAndroid Build Coastguard Worker                                 const struct intel_l3_config *cfg);
194*61046927SAndroid Build Coastguard Worker 
195*61046927SAndroid Build Coastguard Worker void genX(flush_descriptor_buffers)(struct anv_cmd_buffer *cmd_buffer,
196*61046927SAndroid Build Coastguard Worker                                     struct anv_cmd_pipeline_state *pipe_state);
197*61046927SAndroid Build Coastguard Worker 
198*61046927SAndroid Build Coastguard Worker uint32_t
199*61046927SAndroid Build Coastguard Worker genX(cmd_buffer_flush_descriptor_sets)(struct anv_cmd_buffer *cmd_buffer,
200*61046927SAndroid Build Coastguard Worker                                        struct anv_cmd_pipeline_state *pipe_state,
201*61046927SAndroid Build Coastguard Worker                                        const VkShaderStageFlags dirty,
202*61046927SAndroid Build Coastguard Worker                                        struct anv_shader_bin **shaders,
203*61046927SAndroid Build Coastguard Worker                                        uint32_t num_shaders);
204*61046927SAndroid Build Coastguard Worker 
205*61046927SAndroid Build Coastguard Worker void genX(cmd_buffer_flush_gfx_hw_state)(struct anv_cmd_buffer *cmd_buffer);
206*61046927SAndroid Build Coastguard Worker 
207*61046927SAndroid Build Coastguard Worker anv_cmd_dirty_mask_t
208*61046927SAndroid Build Coastguard Worker genX(cmd_buffer_flush_gfx_runtime_state)(struct anv_cmd_buffer *cmd_buffer);
209*61046927SAndroid Build Coastguard Worker 
210*61046927SAndroid Build Coastguard Worker void genX(cmd_buffer_flush_gfx_hw_state)(struct anv_cmd_buffer *cmd_buffer);
211*61046927SAndroid Build Coastguard Worker 
212*61046927SAndroid Build Coastguard Worker void genX(cmd_buffer_enable_pma_fix)(struct anv_cmd_buffer *cmd_buffer,
213*61046927SAndroid Build Coastguard Worker                                      bool enable);
214*61046927SAndroid Build Coastguard Worker 
215*61046927SAndroid Build Coastguard Worker void genX(cmd_buffer_mark_image_written)(struct anv_cmd_buffer *cmd_buffer,
216*61046927SAndroid Build Coastguard Worker                                          const struct anv_image *image,
217*61046927SAndroid Build Coastguard Worker                                          VkImageAspectFlagBits aspect,
218*61046927SAndroid Build Coastguard Worker                                          enum isl_aux_usage aux_usage,
219*61046927SAndroid Build Coastguard Worker                                          uint32_t level,
220*61046927SAndroid Build Coastguard Worker                                          uint32_t base_layer,
221*61046927SAndroid Build Coastguard Worker                                          uint32_t layer_count);
222*61046927SAndroid Build Coastguard Worker 
223*61046927SAndroid Build Coastguard Worker void genX(cmd_emit_conditional_render_predicate)(struct anv_cmd_buffer *cmd_buffer);
224*61046927SAndroid Build Coastguard Worker 
225*61046927SAndroid Build Coastguard Worker struct anv_address genX(cmd_buffer_ray_query_globals)(struct anv_cmd_buffer *cmd_buffer);
226*61046927SAndroid Build Coastguard Worker 
227*61046927SAndroid Build Coastguard Worker void genX(cmd_buffer_ensure_cfe_state)(struct anv_cmd_buffer *cmd_buffer,
228*61046927SAndroid Build Coastguard Worker                                        uint32_t total_scratch);
229*61046927SAndroid Build Coastguard Worker 
230*61046927SAndroid Build Coastguard Worker void
231*61046927SAndroid Build Coastguard Worker genX(emit_urb_setup)(struct anv_device *device, struct anv_batch *batch,
232*61046927SAndroid Build Coastguard Worker                      const struct intel_l3_config *l3_config,
233*61046927SAndroid Build Coastguard Worker                      VkShaderStageFlags active_stages,
234*61046927SAndroid Build Coastguard Worker                      const struct intel_urb_config *urb_cfg_in,
235*61046927SAndroid Build Coastguard Worker                      struct intel_urb_config *urb_cfg_out,
236*61046927SAndroid Build Coastguard Worker                      enum intel_urb_deref_block_size *deref_block_size);
237*61046927SAndroid Build Coastguard Worker 
238*61046927SAndroid Build Coastguard Worker void genX(emit_sample_pattern)(struct anv_batch *batch,
239*61046927SAndroid Build Coastguard Worker                                const struct vk_sample_locations_state *sl);
240*61046927SAndroid Build Coastguard Worker 
241*61046927SAndroid Build Coastguard Worker void genX(cmd_buffer_so_memcpy)(struct anv_cmd_buffer *cmd_buffer,
242*61046927SAndroid Build Coastguard Worker                                 struct anv_address dst, struct anv_address src,
243*61046927SAndroid Build Coastguard Worker                                 uint32_t size);
244*61046927SAndroid Build Coastguard Worker 
245*61046927SAndroid Build Coastguard Worker void genX(cmd_buffer_dispatch_kernel)(struct anv_cmd_buffer *cmd_buffer,
246*61046927SAndroid Build Coastguard Worker                                       struct anv_kernel *kernel,
247*61046927SAndroid Build Coastguard Worker                                       const uint32_t *global_size, /* NULL for indirect */
248*61046927SAndroid Build Coastguard Worker                                       uint32_t arg_count,
249*61046927SAndroid Build Coastguard Worker                                       const struct anv_kernel_arg *args);
250*61046927SAndroid Build Coastguard Worker 
251*61046927SAndroid Build Coastguard Worker void genX(blorp_init_dynamic_states)(struct blorp_context *context);
252*61046927SAndroid Build Coastguard Worker 
253*61046927SAndroid Build Coastguard Worker void genX(blorp_exec)(struct blorp_batch *batch,
254*61046927SAndroid Build Coastguard Worker                       const struct blorp_params *params);
255*61046927SAndroid Build Coastguard Worker 
256*61046927SAndroid Build Coastguard Worker void genX(batch_emit_secondary_call)(struct anv_batch *batch,
257*61046927SAndroid Build Coastguard Worker                                      struct anv_device *device,
258*61046927SAndroid Build Coastguard Worker                                      struct anv_address secondary_addr,
259*61046927SAndroid Build Coastguard Worker                                      struct anv_address secondary_return_addr);
260*61046927SAndroid Build Coastguard Worker 
261*61046927SAndroid Build Coastguard Worker void *genX(batch_emit_return)(struct anv_batch *batch);
262*61046927SAndroid Build Coastguard Worker 
263*61046927SAndroid Build Coastguard Worker void genX(cmd_emit_timestamp)(struct anv_batch *batch,
264*61046927SAndroid Build Coastguard Worker                               struct anv_device *device,
265*61046927SAndroid Build Coastguard Worker                               struct anv_address addr,
266*61046927SAndroid Build Coastguard Worker                               enum anv_timestamp_capture_type type,
267*61046927SAndroid Build Coastguard Worker                               void *data);
268*61046927SAndroid Build Coastguard Worker 
269*61046927SAndroid Build Coastguard Worker void genX(cmd_capture_data)(struct anv_batch *batch,
270*61046927SAndroid Build Coastguard Worker                             struct anv_device *device,
271*61046927SAndroid Build Coastguard Worker                             struct anv_address dst_addr,
272*61046927SAndroid Build Coastguard Worker                             struct anv_address src_addr,
273*61046927SAndroid Build Coastguard Worker                             uint32_t size_B);
274*61046927SAndroid Build Coastguard Worker 
275*61046927SAndroid Build Coastguard Worker void
276*61046927SAndroid Build Coastguard Worker genX(batch_emit_post_3dprimitive_was)(struct anv_batch *batch,
277*61046927SAndroid Build Coastguard Worker                                       const struct anv_device *device,
278*61046927SAndroid Build Coastguard Worker                                       uint32_t primitive_topology,
279*61046927SAndroid Build Coastguard Worker                                       uint32_t vertex_count);
280*61046927SAndroid Build Coastguard Worker 
281*61046927SAndroid Build Coastguard Worker void genX(batch_emit_fast_color_dummy_blit)(struct anv_batch *batch,
282*61046927SAndroid Build Coastguard Worker                                             struct anv_device *device);
283*61046927SAndroid Build Coastguard Worker 
284*61046927SAndroid Build Coastguard Worker VkPolygonMode
285*61046927SAndroid Build Coastguard Worker genX(raster_polygon_mode)(const struct anv_graphics_pipeline *pipeline,
286*61046927SAndroid Build Coastguard Worker                           VkPolygonMode polygon_mode,
287*61046927SAndroid Build Coastguard Worker                           VkPrimitiveTopology primitive_topology);
288*61046927SAndroid Build Coastguard Worker 
289*61046927SAndroid Build Coastguard Worker void
290*61046927SAndroid Build Coastguard Worker genX(graphics_pipeline_emit)(struct anv_graphics_pipeline *pipeline,
291*61046927SAndroid Build Coastguard Worker                              const struct vk_graphics_pipeline_state *state);
292*61046927SAndroid Build Coastguard Worker 
293*61046927SAndroid Build Coastguard Worker void
294*61046927SAndroid Build Coastguard Worker genX(compute_pipeline_emit)(struct anv_compute_pipeline *pipeline);
295*61046927SAndroid Build Coastguard Worker 
296*61046927SAndroid Build Coastguard Worker void
297*61046927SAndroid Build Coastguard Worker genX(ray_tracing_pipeline_emit)(struct anv_ray_tracing_pipeline *pipeline);
298*61046927SAndroid Build Coastguard Worker 
299*61046927SAndroid Build Coastguard Worker #define anv_shader_bin_get_bsr(bin, local_arg_offset) ({             \
300*61046927SAndroid Build Coastguard Worker    assert((local_arg_offset) % 8 == 0);                              \
301*61046927SAndroid Build Coastguard Worker    const struct brw_bs_prog_data *prog_data =                        \
302*61046927SAndroid Build Coastguard Worker       brw_bs_prog_data_const(bin->prog_data);                        \
303*61046927SAndroid Build Coastguard Worker    assert(prog_data->simd_size == 8 || prog_data->simd_size == 16);  \
304*61046927SAndroid Build Coastguard Worker                                                                      \
305*61046927SAndroid Build Coastguard Worker    (struct GENX(BINDLESS_SHADER_RECORD)) {                           \
306*61046927SAndroid Build Coastguard Worker       .OffsetToLocalArguments = (local_arg_offset) / 8,              \
307*61046927SAndroid Build Coastguard Worker       .BindlessShaderDispatchMode =                                  \
308*61046927SAndroid Build Coastguard Worker          prog_data->simd_size == 16 ? RT_SIMD16 : RT_SIMD8,          \
309*61046927SAndroid Build Coastguard Worker       .KernelStartPointer = bin->kernel.offset,                      \
310*61046927SAndroid Build Coastguard Worker    };                                                                \
311*61046927SAndroid Build Coastguard Worker })
312*61046927SAndroid Build Coastguard Worker 
313*61046927SAndroid Build Coastguard Worker void
314*61046927SAndroid Build Coastguard Worker genX(batch_set_preemption)(struct anv_batch *batch,
315*61046927SAndroid Build Coastguard Worker                            const struct intel_device_info *devinfo,
316*61046927SAndroid Build Coastguard Worker                            uint32_t current_pipeline,
317*61046927SAndroid Build Coastguard Worker                            bool value);
318*61046927SAndroid Build Coastguard Worker 
319*61046927SAndroid Build Coastguard Worker void
320*61046927SAndroid Build Coastguard Worker genX(cmd_buffer_set_preemption)(struct anv_cmd_buffer *cmd_buffer, bool value);
321*61046927SAndroid Build Coastguard Worker 
322*61046927SAndroid Build Coastguard Worker void
323*61046927SAndroid Build Coastguard Worker genX(batch_emit_pipe_control)(struct anv_batch *batch,
324*61046927SAndroid Build Coastguard Worker                               const struct intel_device_info *devinfo,
325*61046927SAndroid Build Coastguard Worker                               uint32_t current_pipeline,
326*61046927SAndroid Build Coastguard Worker                               enum anv_pipe_bits bits,
327*61046927SAndroid Build Coastguard Worker                               const char *reason);
328*61046927SAndroid Build Coastguard Worker 
329*61046927SAndroid Build Coastguard Worker void
330*61046927SAndroid Build Coastguard Worker genX(batch_emit_pipe_control_write)(struct anv_batch *batch,
331*61046927SAndroid Build Coastguard Worker                                     const struct intel_device_info *devinfo,
332*61046927SAndroid Build Coastguard Worker                                     uint32_t current_pipeline,
333*61046927SAndroid Build Coastguard Worker                                     uint32_t post_sync_op,
334*61046927SAndroid Build Coastguard Worker                                     struct anv_address address,
335*61046927SAndroid Build Coastguard Worker                                     uint32_t imm_data,
336*61046927SAndroid Build Coastguard Worker                                     enum anv_pipe_bits bits,
337*61046927SAndroid Build Coastguard Worker                                     const char *reason);
338*61046927SAndroid Build Coastguard Worker 
339*61046927SAndroid Build Coastguard Worker #define genx_batch_emit_pipe_control(a, b, c, d) \
340*61046927SAndroid Build Coastguard Worker genX(batch_emit_pipe_control) (a, b, c, d, __func__)
341*61046927SAndroid Build Coastguard Worker 
342*61046927SAndroid Build Coastguard Worker #define genx_batch_emit_pipe_control_write(a, b, c, d, e, f, g) \
343*61046927SAndroid Build Coastguard Worker genX(batch_emit_pipe_control_write) (a, b, c, d, e, f, g, __func__)
344*61046927SAndroid Build Coastguard Worker 
345*61046927SAndroid Build Coastguard Worker void genX(batch_emit_breakpoint)(struct anv_batch *batch,
346*61046927SAndroid Build Coastguard Worker                                  struct anv_device *device,
347*61046927SAndroid Build Coastguard Worker                                  bool emit_before_draw);
348*61046927SAndroid Build Coastguard Worker 
349*61046927SAndroid Build Coastguard Worker static inline void
genX(emit_breakpoint)350*61046927SAndroid Build Coastguard Worker genX(emit_breakpoint)(struct anv_batch *batch,
351*61046927SAndroid Build Coastguard Worker                       struct anv_device *device,
352*61046927SAndroid Build Coastguard Worker                       bool emit_before_draw)
353*61046927SAndroid Build Coastguard Worker {
354*61046927SAndroid Build Coastguard Worker    if (INTEL_DEBUG(DEBUG_DRAW_BKP))
355*61046927SAndroid Build Coastguard Worker       genX(batch_emit_breakpoint)(batch, device, emit_before_draw);
356*61046927SAndroid Build Coastguard Worker }
357*61046927SAndroid Build Coastguard Worker 
358*61046927SAndroid Build Coastguard Worker void
359*61046927SAndroid Build Coastguard Worker genX(cmd_buffer_begin_companion)(struct anv_cmd_buffer *buffer,
360*61046927SAndroid Build Coastguard Worker                                  VkCommandBufferLevel level);
361*61046927SAndroid Build Coastguard Worker 
362*61046927SAndroid Build Coastguard Worker struct anv_state
363*61046927SAndroid Build Coastguard Worker genX(cmd_buffer_begin_companion_rcs_syncpoint)(struct anv_cmd_buffer *cmd_buffer);
364*61046927SAndroid Build Coastguard Worker 
365*61046927SAndroid Build Coastguard Worker void
366*61046927SAndroid Build Coastguard Worker genX(cmd_buffer_end_companion_rcs_syncpoint)(struct anv_cmd_buffer *cmd_buffer,
367*61046927SAndroid Build Coastguard Worker                                              struct anv_state syncpoint);
368*61046927SAndroid Build Coastguard Worker 
369*61046927SAndroid Build Coastguard Worker void
370*61046927SAndroid Build Coastguard Worker genX(emit_simple_shader_init)(struct anv_simple_shader *state);
371*61046927SAndroid Build Coastguard Worker 
372*61046927SAndroid Build Coastguard Worker void
373*61046927SAndroid Build Coastguard Worker genX(emit_simple_shader_dispatch)(struct anv_simple_shader *state,
374*61046927SAndroid Build Coastguard Worker                                   uint32_t num_threads,
375*61046927SAndroid Build Coastguard Worker                                   struct anv_state push_state);
376*61046927SAndroid Build Coastguard Worker 
377*61046927SAndroid Build Coastguard Worker struct anv_state
378*61046927SAndroid Build Coastguard Worker genX(simple_shader_alloc_push)(struct anv_simple_shader *state, uint32_t size);
379*61046927SAndroid Build Coastguard Worker 
380*61046927SAndroid Build Coastguard Worker struct anv_address
381*61046927SAndroid Build Coastguard Worker genX(simple_shader_push_state_address)(struct anv_simple_shader *state,
382*61046927SAndroid Build Coastguard Worker                                        struct anv_state push_state);
383*61046927SAndroid Build Coastguard Worker 
384*61046927SAndroid Build Coastguard Worker void
385*61046927SAndroid Build Coastguard Worker genX(emit_simple_shader_end)(struct anv_simple_shader *state);
386*61046927SAndroid Build Coastguard Worker 
387*61046927SAndroid Build Coastguard Worker VkResult genX(init_trtt_context_state)(struct anv_async_submit *submit);
388*61046927SAndroid Build Coastguard Worker 
389*61046927SAndroid Build Coastguard Worker void genX(write_trtt_entries)(struct anv_async_submit *submit,
390*61046927SAndroid Build Coastguard Worker                               struct anv_trtt_bind *l3l2_binds,
391*61046927SAndroid Build Coastguard Worker                               uint32_t n_l3l2_binds,
392*61046927SAndroid Build Coastguard Worker                               struct anv_trtt_bind *l1_binds,
393*61046927SAndroid Build Coastguard Worker                               uint32_t n_l1_binds);
394*61046927SAndroid Build Coastguard Worker 
395*61046927SAndroid Build Coastguard Worker void genX(async_submit_end)(struct anv_async_submit *submit);
396*61046927SAndroid Build Coastguard Worker 
397*61046927SAndroid Build Coastguard Worker void
398*61046927SAndroid Build Coastguard Worker genX(cmd_buffer_emit_push_descriptor_buffer_surface)(struct anv_cmd_buffer *cmd_buffer,
399*61046927SAndroid Build Coastguard Worker                                                      struct anv_descriptor_set *set);
400*61046927SAndroid Build Coastguard Worker 
401*61046927SAndroid Build Coastguard Worker void
402*61046927SAndroid Build Coastguard Worker genX(cmd_buffer_emit_push_descriptor_surfaces)(struct anv_cmd_buffer *cmd_buffer,
403*61046927SAndroid Build Coastguard Worker                                                struct anv_descriptor_set *set);
404*61046927SAndroid Build Coastguard Worker 
405*61046927SAndroid Build Coastguard Worker static inline VkShaderStageFlags
genX(cmd_buffer_flush_push_descriptors)406*61046927SAndroid Build Coastguard Worker genX(cmd_buffer_flush_push_descriptors)(struct anv_cmd_buffer *cmd_buffer,
407*61046927SAndroid Build Coastguard Worker                                         struct anv_cmd_pipeline_state *state,
408*61046927SAndroid Build Coastguard Worker                                         struct anv_pipeline *pipeline)
409*61046927SAndroid Build Coastguard Worker {
410*61046927SAndroid Build Coastguard Worker    if (!pipeline->use_push_descriptor && !pipeline->use_push_descriptor_buffer)
411*61046927SAndroid Build Coastguard Worker       return 0;
412*61046927SAndroid Build Coastguard Worker 
413*61046927SAndroid Build Coastguard Worker    assert(pipeline->layout.push_descriptor_set_index != -1);
414*61046927SAndroid Build Coastguard Worker    struct anv_descriptor_set *set =
415*61046927SAndroid Build Coastguard Worker       state->descriptors[pipeline->layout.push_descriptor_set_index];
416*61046927SAndroid Build Coastguard Worker    assert(set->is_push);
417*61046927SAndroid Build Coastguard Worker 
418*61046927SAndroid Build Coastguard Worker    const VkShaderStageFlags push_buffer_dirty =
419*61046927SAndroid Build Coastguard Worker       cmd_buffer->state.push_descriptors_dirty &
420*61046927SAndroid Build Coastguard Worker       pipeline->use_push_descriptor_buffer;
421*61046927SAndroid Build Coastguard Worker    if (push_buffer_dirty) {
422*61046927SAndroid Build Coastguard Worker       if (set->desc_surface_state.map == NULL)
423*61046927SAndroid Build Coastguard Worker          genX(cmd_buffer_emit_push_descriptor_buffer_surface)(cmd_buffer, set);
424*61046927SAndroid Build Coastguard Worker 
425*61046927SAndroid Build Coastguard Worker       /* Force the next push descriptor update to allocate a new descriptor set. */
426*61046927SAndroid Build Coastguard Worker       state->push_descriptor.set_used_on_gpu = true;
427*61046927SAndroid Build Coastguard Worker    }
428*61046927SAndroid Build Coastguard Worker 
429*61046927SAndroid Build Coastguard Worker    const VkShaderStageFlags push_descriptor_dirty =
430*61046927SAndroid Build Coastguard Worker       cmd_buffer->state.push_descriptors_dirty & pipeline->use_push_descriptor;
431*61046927SAndroid Build Coastguard Worker    if (push_descriptor_dirty) {
432*61046927SAndroid Build Coastguard Worker       genX(cmd_buffer_emit_push_descriptor_surfaces)(cmd_buffer, set);
433*61046927SAndroid Build Coastguard Worker 
434*61046927SAndroid Build Coastguard Worker       /* Force the next push descriptor update to allocate a new descriptor set. */
435*61046927SAndroid Build Coastguard Worker       state->push_descriptor.set_used_on_gpu = true;
436*61046927SAndroid Build Coastguard Worker    }
437*61046927SAndroid Build Coastguard Worker 
438*61046927SAndroid Build Coastguard Worker    /* Clear the dirty stages now that we've generated the surface states for
439*61046927SAndroid Build Coastguard Worker     * them.
440*61046927SAndroid Build Coastguard Worker     */
441*61046927SAndroid Build Coastguard Worker    cmd_buffer->state.push_descriptors_dirty &=
442*61046927SAndroid Build Coastguard Worker       ~(push_descriptor_dirty | push_buffer_dirty);
443*61046927SAndroid Build Coastguard Worker 
444*61046927SAndroid Build Coastguard Worker    /* Return the binding table stages that need to be updated */
445*61046927SAndroid Build Coastguard Worker    return push_buffer_dirty | push_descriptor_dirty;
446*61046927SAndroid Build Coastguard Worker }
447*61046927SAndroid Build Coastguard Worker 
448*61046927SAndroid Build Coastguard Worker void genX(emit_embedded_sampler)(struct anv_device *device,
449*61046927SAndroid Build Coastguard Worker                                  struct anv_embedded_sampler *sampler,
450*61046927SAndroid Build Coastguard Worker                                  struct anv_pipeline_embedded_sampler_binding *binding);
451