r600: unify nir shader options evaluation

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9330>
This commit is contained in:
Gert Wollny
2021-02-26 21:11:44 +01:00
parent 04d8d455b7
commit 4fe0339941
2 changed files with 40 additions and 60 deletions

View File

@@ -27,7 +27,6 @@
#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"
@@ -1170,70 +1169,16 @@ struct pipe_resource *r600_resource_create_common(struct pipe_screen *screen,
}
}
const struct nir_shader_compiler_options r600_nir_fs_options = {
.fuse_ffma16 = true,
.fuse_ffma32 = true,
.fuse_ffma64 = true,
.lower_scmp = true,
.lower_flrp32 = true,
.lower_flrp64 = true,
.lower_fpow = true,
.lower_fdiv = true,
.lower_isign = true,
.lower_fsign = true,
.lower_fmod = true,
.lower_doubles_options = nir_lower_fp64_full_software,
.lower_int64_options = ~0,
.lower_extract_byte = true,
.lower_extract_word = true,
.lower_rotate = true,
.max_unroll_iterations = 32,
.lower_interpolate_at = true,
.vectorize_io = true,
.has_umad24 = true,
.has_umul24 = true,
.use_interpolated_input_intrinsics = true,
.has_fsub = true,
.has_isub = true,
.lower_iabs = true,
};
const struct nir_shader_compiler_options r600_nir_options = {
.fuse_ffma16 = true,
.fuse_ffma32 = true,
.fuse_ffma64 = true,
.lower_scmp = true,
.lower_flrp32 = true,
.lower_flrp64 = true,
.lower_fpow = true,
.lower_fdiv = true,
.lower_fmod = true,
.lower_doubles_options = nir_lower_fp64_full_software,
.lower_int64_options = ~0,
.lower_extract_byte = true,
.lower_extract_word = true,
.lower_rotate = true,
.max_unroll_iterations = 32,
.vectorize_io = true,
.has_umad24 = true,
.has_umul24 = true,
.has_fsub = true,
.has_isub = true,
.lower_iabs = true,
.lower_isign = 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);
if (shader == PIPE_SHADER_FRAGMENT)
return &r600_nir_fs_options;
else
return &r600_nir_options;
assert(ir == PIPE_SHADER_IR_NIR);
struct r600_common_screen *rscreen = (struct r600_common_screen *)screen;
return &rscreen->nir_options;
}
bool r600_common_screen_init(struct r600_common_screen *rscreen,
@@ -1355,6 +1300,37 @@ bool r600_common_screen_init(struct r600_common_screen *rscreen,
printf("enabled_rb_mask = 0x%x\n", rscreen->info.enabled_rb_mask);
printf("max_alignment = %u\n", (unsigned)rscreen->info.max_alignment);
}
const struct nir_shader_compiler_options nir_options = {
.fuse_ffma16 = true,
.fuse_ffma32 = true,
.fuse_ffma64 = true,
.lower_scmp = true, /* TODO: Should be checked */
.lower_flrp32 = true,
.lower_flrp64 = true,
.lower_fpow = true,
.lower_fdiv = true,
.lower_isign = true,
.lower_fsign = true,
.lower_fmod = true,
.lower_doubles_options = nir_lower_fp64_full_software,
.lower_int64_options = ~0,
.lower_extract_byte = true,
.lower_extract_word = true,
.lower_rotate = true,
.max_unroll_iterations = 32,
.lower_interpolate_at = true,
.vectorize_io = true,
.has_umad24 = true,
.has_umul24 = true,
.use_interpolated_input_intrinsics = true,
.has_fsub = true,
.has_isub = true,
.lower_iabs = true,
};
rscreen->nir_options = nir_options;
return true;
}

View File

@@ -45,6 +45,8 @@
#include "util/u_transfer.h"
#include "util/u_threaded_context.h"
#include "compiler/nir/nir.h"
struct u_log_context;
#define ATI_VENDOR_ID 0x1002
@@ -404,6 +406,8 @@ struct r600_common_screen {
*/
unsigned compute_to_L2;
} barrier_flags;
struct nir_shader_compiler_options nir_options;
};
/* This encapsulates a state or an operation which can emitted into the GPU