diff options
author | Nicolai Hähnle <nicolai.haehnle@amd.com> | 2017-05-16 02:04:48 +0200 |
---|---|---|
committer | Nicolai Hähnle <nicolai.haehnle@amd.com> | 2017-07-05 12:32:36 +0200 |
commit | e187191756e2a7f7cea5b42f33c63da465679c70 (patch) | |
tree | d07d0c4f91dd47f1bfbc1ab4e4af6bc2bc4e5121 | |
parent | ba7d79bf58de962df8d05894d8328c9918f5c670 (diff) |
radeonsi: implement pipe_screen::get_compiler_options for NIR
-rw-r--r-- | src/gallium/drivers/radeonsi/si_pipe.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c index 00cd211f38..beadb88c68 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.c +++ b/src/gallium/drivers/radeonsi/si_pipe.c @@ -34,6 +34,8 @@ #include "vl/vl_decoder.h" #include "../ddebug/dd_util.h" +#include "compiler/nir/nir.h" + /* * pipe_context */ @@ -783,6 +785,36 @@ static int si_get_shader_param(struct pipe_screen* pscreen, return 0; } +static const struct nir_shader_compiler_options nir_options = { + .vertex_id_zero_based = true, + .lower_scmp = true, + .lower_flrp32 = true, + .lower_fsat = true, + .lower_fdiv = true, + .lower_sub = true, + .lower_pack_snorm_2x16 = true, + .lower_pack_snorm_4x8 = true, + .lower_pack_unorm_2x16 = true, + .lower_pack_unorm_4x8 = true, + .lower_unpack_snorm_2x16 = true, + .lower_unpack_snorm_4x8 = true, + .lower_unpack_unorm_2x16 = true, + .lower_unpack_unorm_4x8 = true, + .lower_extract_byte = true, + .lower_extract_word = true, + .max_unroll_iterations = 32, + .native_integers = true, +}; + +static const void * +si_get_compiler_options(struct pipe_screen *screen, + enum pipe_shader_ir ir, + enum pipe_shader_type shader) +{ + assert(ir == PIPE_SHADER_IR_NIR); + return &nir_options; +} + static void si_destroy_screen(struct pipe_screen* pscreen) { struct si_screen *sscreen = (struct si_screen *)pscreen; @@ -934,6 +966,7 @@ struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws, sscreen->b.b.destroy = si_destroy_screen; sscreen->b.b.get_param = si_get_param; sscreen->b.b.get_shader_param = si_get_shader_param; + sscreen->b.b.get_compiler_options = si_get_compiler_options; sscreen->b.b.resource_create = r600_resource_create_common; si_init_screen_state_functions(sscreen); |