From: Gert Wollny Date: Sat, 28 Dec 2019 14:34:54 +0000 (+0100) Subject: r600: Add NIR compiler options X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=51285bf32ee98dcf92c4c31f7862b18ed2db322c;p=mesa.git r600: Add NIR compiler options Signed-off-by: Gert Wollny Part-of: --- diff --git a/src/gallium/drivers/r600/r600_pipe_common.c b/src/gallium/drivers/r600/r600_pipe_common.c index 91607ca71ea..df6e7bcaeb0 100644 --- a/src/gallium/drivers/r600/r600_pipe_common.c +++ b/src/gallium/drivers/r600/r600_pipe_common.c @@ -27,6 +27,7 @@ #include "r600_pipe_common.h" #include "r600_cs.h" #include "tgsi/tgsi_parse.h" +#include "compiler/nir/nir.h" #include "util/list.h" #include "util/u_draw_quad.h" #include "util/u_memory.h" @@ -1177,6 +1178,33 @@ struct pipe_resource *r600_resource_create_common(struct pipe_screen *screen, } } +const struct nir_shader_compiler_options r600_nir_options = { + .fuse_ffma = true, + .lower_scmp = true, + .lower_flrp32 = true, + .lower_flrp64 = true, + .lower_fpow = true, + .lower_fdiv = true, + .lower_idiv = true, + .lower_fmod = true, + .lower_doubles_options = nir_lower_fp64_full_software, + .lower_int64_options = 0, + .lower_extract_byte = true, + .lower_extract_word = true, + .max_unroll_iterations = 32, + .lower_all_io_to_temps = true, + .vectorize_io = true +}; + +static const void * +r600_get_compiler_options(struct pipe_screen *screen, + enum pipe_shader_ir ir, + enum pipe_shader_type shader) +{ + assert(ir == PIPE_SHADER_IR_NIR); + return &r600_nir_options; +} + bool r600_common_screen_init(struct r600_common_screen *rscreen, struct radeon_winsys *ws) { @@ -1210,6 +1238,7 @@ bool r600_common_screen_init(struct r600_common_screen *rscreen, rscreen->b.get_compute_param = r600_get_compute_param; rscreen->b.get_paramf = r600_get_paramf; rscreen->b.get_timestamp = r600_get_timestamp; + rscreen->b.get_compiler_options = r600_get_compiler_options; rscreen->b.fence_finish = r600_fence_finish; rscreen->b.fence_reference = r600_fence_reference; rscreen->b.resource_destroy = u_resource_destroy_vtbl;