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:
@@ -27,7 +27,6 @@
|
|||||||
#include "r600_pipe_common.h"
|
#include "r600_pipe_common.h"
|
||||||
#include "r600_cs.h"
|
#include "r600_cs.h"
|
||||||
#include "tgsi/tgsi_parse.h"
|
#include "tgsi/tgsi_parse.h"
|
||||||
#include "compiler/nir/nir.h"
|
|
||||||
#include "util/list.h"
|
#include "util/list.h"
|
||||||
#include "util/u_draw_quad.h"
|
#include "util/u_draw_quad.h"
|
||||||
#include "util/u_memory.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 *
|
static const void *
|
||||||
r600_get_compiler_options(struct pipe_screen *screen,
|
r600_get_compiler_options(struct pipe_screen *screen,
|
||||||
enum pipe_shader_ir ir,
|
enum pipe_shader_ir ir,
|
||||||
enum pipe_shader_type shader)
|
enum pipe_shader_type shader)
|
||||||
{
|
{
|
||||||
assert(ir == PIPE_SHADER_IR_NIR);
|
assert(ir == PIPE_SHADER_IR_NIR);
|
||||||
if (shader == PIPE_SHADER_FRAGMENT)
|
|
||||||
return &r600_nir_fs_options;
|
struct r600_common_screen *rscreen = (struct r600_common_screen *)screen;
|
||||||
else
|
|
||||||
return &r600_nir_options;
|
return &rscreen->nir_options;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool r600_common_screen_init(struct r600_common_screen *rscreen,
|
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("enabled_rb_mask = 0x%x\n", rscreen->info.enabled_rb_mask);
|
||||||
printf("max_alignment = %u\n", (unsigned)rscreen->info.max_alignment);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -45,6 +45,8 @@
|
|||||||
#include "util/u_transfer.h"
|
#include "util/u_transfer.h"
|
||||||
#include "util/u_threaded_context.h"
|
#include "util/u_threaded_context.h"
|
||||||
|
|
||||||
|
#include "compiler/nir/nir.h"
|
||||||
|
|
||||||
struct u_log_context;
|
struct u_log_context;
|
||||||
#define ATI_VENDOR_ID 0x1002
|
#define ATI_VENDOR_ID 0x1002
|
||||||
|
|
||||||
@@ -404,6 +406,8 @@ struct r600_common_screen {
|
|||||||
*/
|
*/
|
||||||
unsigned compute_to_L2;
|
unsigned compute_to_L2;
|
||||||
} barrier_flags;
|
} barrier_flags;
|
||||||
|
|
||||||
|
struct nir_shader_compiler_options nir_options;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* This encapsulates a state or an operation which can emitted into the GPU
|
/* This encapsulates a state or an operation which can emitted into the GPU
|
||||||
|
Reference in New Issue
Block a user