xref: /aosp_15_r20/external/mesa3d/src/intel/compiler/intel_nir.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Copyright (c) 2015-2023 Intel Corporation
3*61046927SAndroid Build Coastguard Worker  * SPDX-License-Identifier: MIT
4*61046927SAndroid Build Coastguard Worker  */
5*61046927SAndroid Build Coastguard Worker 
6*61046927SAndroid Build Coastguard Worker #ifndef INTEL_NIR_H
7*61046927SAndroid Build Coastguard Worker #define INTEL_NIR_H
8*61046927SAndroid Build Coastguard Worker 
9*61046927SAndroid Build Coastguard Worker #include "nir.h"
10*61046927SAndroid Build Coastguard Worker 
11*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus
12*61046927SAndroid Build Coastguard Worker extern "C" {
13*61046927SAndroid Build Coastguard Worker #endif
14*61046927SAndroid Build Coastguard Worker 
15*61046927SAndroid Build Coastguard Worker struct intel_device_info;
16*61046927SAndroid Build Coastguard Worker 
17*61046927SAndroid Build Coastguard Worker void intel_nir_apply_tcs_quads_workaround(nir_shader *nir);
18*61046927SAndroid Build Coastguard Worker bool intel_nir_blockify_uniform_loads(nir_shader *shader,
19*61046927SAndroid Build Coastguard Worker                                       const struct intel_device_info *devinfo);
20*61046927SAndroid Build Coastguard Worker bool intel_nir_clamp_image_1d_2d_array_sizes(nir_shader *shader);
21*61046927SAndroid Build Coastguard Worker bool intel_nir_clamp_per_vertex_loads(nir_shader *shader);
22*61046927SAndroid Build Coastguard Worker bool intel_nir_cleanup_resource_intel(nir_shader *shader);
23*61046927SAndroid Build Coastguard Worker 
24*61046927SAndroid Build Coastguard Worker bool intel_nir_lower_conversions(nir_shader *nir);
25*61046927SAndroid Build Coastguard Worker bool intel_nir_lower_non_uniform_barycentric_at_sample(nir_shader *nir);
26*61046927SAndroid Build Coastguard Worker bool intel_nir_lower_non_uniform_resource_intel(nir_shader *shader);
27*61046927SAndroid Build Coastguard Worker bool intel_nir_lower_patch_vertices_in(nir_shader *shader, unsigned input_vertices);
28*61046927SAndroid Build Coastguard Worker bool intel_nir_lower_shading_rate_output(nir_shader *nir);
29*61046927SAndroid Build Coastguard Worker bool intel_nir_lower_sparse_intrinsics(nir_shader *nir);
30*61046927SAndroid Build Coastguard Worker 
31*61046927SAndroid Build Coastguard Worker struct intel_nir_lower_texture_opts {
32*61046927SAndroid Build Coastguard Worker    bool combined_lod_and_array_index;
33*61046927SAndroid Build Coastguard Worker    bool combined_lod_or_bias_and_offset;
34*61046927SAndroid Build Coastguard Worker };
35*61046927SAndroid Build Coastguard Worker bool intel_nir_lower_texture(nir_shader *nir,
36*61046927SAndroid Build Coastguard Worker                              const struct intel_nir_lower_texture_opts *opts);
37*61046927SAndroid Build Coastguard Worker 
38*61046927SAndroid Build Coastguard Worker bool intel_nir_opt_peephole_ffma(nir_shader *shader);
39*61046927SAndroid Build Coastguard Worker bool intel_nir_opt_peephole_imul32x16(nir_shader *shader);
40*61046927SAndroid Build Coastguard Worker 
41*61046927SAndroid Build Coastguard Worker bool intel_nir_pulls_at_sample(nir_shader *shader);
42*61046927SAndroid Build Coastguard Worker 
43*61046927SAndroid Build Coastguard Worker bool intel_nir_lower_printf(nir_shader *nir);
44*61046927SAndroid Build Coastguard Worker 
45*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus
46*61046927SAndroid Build Coastguard Worker }
47*61046927SAndroid Build Coastguard Worker #endif
48*61046927SAndroid Build Coastguard Worker 
49*61046927SAndroid Build Coastguard Worker #endif /* INTEL_NIR_H */
50