pan/mdg: Implement texture gathers
[mesa.git] / src / panfrost / bifrost / bifrost_compile.h
index 8c8c5e9d0149c935715236527853afadc8ad52e0..734406d52e0da09391d1e087a17372694a6a46a8 100644 (file)
 
 #include "compiler/nir/nir.h"
 #include "util/u_dynarray.h"
+#include "panfrost/util/pan_ir.h"
 
-typedef struct {
-        struct util_dynarray compiled;
-} bifrost_program;
-
-int
-bifrost_compile_shader_nir(nir_shader *nir, bifrost_program *program);
+void bifrost_compile_shader_nir(nir_shader *nir, panfrost_program *program, unsigned product_id);
 
 static const nir_shader_compiler_options bifrost_nir_options = {
-        .lower_ffma = true,
-        .lower_sub = true,
         .lower_scmp = true,
         .lower_flrp32 = true,
         .lower_flrp64 = true,
@@ -48,6 +42,8 @@ static const nir_shader_compiler_options bifrost_nir_options = {
         .lower_fpow = true,
         .lower_find_lsb = true,
         .lower_fdph = true,
+        .lower_fsqrt = true,
+        .lower_sincos = true,
 
         .lower_wpos_pntc = true,
         .lower_fsign = true,
@@ -57,22 +53,22 @@ static const nir_shader_compiler_options bifrost_nir_options = {
         .lower_rotate = true,
 
         .lower_pack_half_2x16 = true,
-        .lower_pack_half_2x16_split = true,
         .lower_pack_unorm_2x16 = true,
         .lower_pack_snorm_2x16 = true,
         .lower_pack_unorm_4x8 = true,
         .lower_pack_snorm_4x8 = true,
         .lower_unpack_half_2x16 = true,
-        .lower_unpack_half_2x16_split = true,
         .lower_unpack_unorm_2x16 = true,
         .lower_unpack_snorm_2x16 = true,
         .lower_unpack_unorm_4x8 = true,
         .lower_unpack_snorm_4x8 = true,
+        .lower_pack_split = true,
 
         .lower_doubles_options = nir_lower_dmod,
 
         .lower_bitfield_extract_to_shifts = true,
         .vectorize_io = true,
+        .fuse_ffma = true,
         .use_interpolated_input_intrinsics = true
 };