diff --git a/src/gallium/drivers/iris/iris_program.c b/src/gallium/drivers/iris/iris_program.c index 220406065a3..3458f0a40d4 100644 --- a/src/gallium/drivers/iris/iris_program.c +++ b/src/gallium/drivers/iris/iris_program.c @@ -12,6 +12,8 @@ #include #include +#include "compiler/jay/jay.h" +#include "dev/intel_device_info.h" #include "pipe/p_defines.h" #include "pipe/p_state.h" #include "pipe/p_context.h" @@ -1926,7 +1928,17 @@ iris_compile_vs(struct iris_screen *screen, .prog_data = brw_prog_data, }; - program = brw_compile_vs(screen->brw, ¶ms); + if (intel_use_jay(devinfo, nir->info.stage)) { + struct jay_shader_bin *bin = + jay_compile(devinfo, mem_ctx, nir, + (union brw_any_prog_data *) brw_prog_data, + (union brw_any_prog_key *) &brw_key); + + program = bin->kernel; + } else { + program = brw_compile_vs(screen->brw, ¶ms); + } + error = params.base.error_str; if (program) { iris_debug_recompile(dbg, ish, key); @@ -2774,7 +2786,6 @@ iris_compile_fs(struct iris_screen *screen, brw_apply_ubo_ranges(screen, nir, ubo_ranges, &brw_prog_data->base); struct brw_fs_prog_key brw_key = iris_to_brw_fs_key(screen, key); - struct brw_compile_fs_params params = { .base = { .mem_ctx = mem_ctx, @@ -2791,7 +2802,17 @@ iris_compile_fs(struct iris_screen *screen, .vue_map = vue_map, }; - program = brw_compile_fs(screen->brw, ¶ms); + if (intel_use_jay(devinfo, nir->info.stage)) { + struct jay_shader_bin *bin = + jay_compile(devinfo, mem_ctx, nir, + (union brw_any_prog_data *) brw_prog_data, + (union brw_any_prog_key *) &brw_key); + + program = bin->kernel; + } else { + program = brw_compile_fs(screen->brw, ¶ms); + } + error = params.base.error_str; if (program) { iris_debug_recompile(dbg, ish, key); @@ -3141,7 +3162,17 @@ iris_compile_cs(struct iris_screen *screen, .prog_data = brw_prog_data, }; - program = brw_compile_cs(screen->brw, ¶ms); + if (intel_use_jay(devinfo, nir->info.stage)) { + struct jay_shader_bin *bin = + jay_compile(devinfo, mem_ctx, nir, + (union brw_any_prog_data *) brw_prog_data, + (union brw_any_prog_key *) &brw_key); + + program = bin->kernel; + } else { + program = brw_compile_cs(screen->brw, ¶ms); + } + error = params.base.error_str; if (program) { iris_debug_recompile(dbg, ish, key); diff --git a/src/gallium/drivers/iris/meson.build b/src/gallium/drivers/iris/meson.build index 91c1227abc9..833b5b02dd5 100644 --- a/src/gallium/drivers/iris/meson.build +++ b/src/gallium/drivers/iris/meson.build @@ -93,7 +93,7 @@ libiris = static_library( idep_intel_blorp_elk, idep_intel_decoder_elk, idep_intel_blorp, idep_intel_decoder_brw, idep_intel_compiler_elk, idep_intel_compiler_brw, - idep_mesautil], + idep_intel_compiler_jay, idep_mesautil], link_with : [ iris_per_hw_ver_libs, libisl, libintel_perf