etnaviv: drop TGSI based backend compiler
I think it is time to switch to NIR per default and forget about the past. There might be stuff that will explode in different ways now but thats all fixable. Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Acked-by: Lucas Stach <l.stach@pengutronix.de> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12889>
This commit is contained in:
committed by
Marge Bot
parent
29393a40ee
commit
367b6c553d
@@ -35,9 +35,6 @@ etna_compiler_create(const char *renderer)
|
||||
{
|
||||
struct etna_compiler *compiler = rzalloc(NULL, struct etna_compiler);
|
||||
|
||||
if (DBG_ENABLED(ETNA_DBG_TGSI))
|
||||
return compiler;
|
||||
|
||||
compiler->regs = etna_ra_setup(compiler);
|
||||
if (!compiler->regs) {
|
||||
ralloc_free((void *)compiler);
|
||||
|
||||
@@ -41,7 +41,6 @@
|
||||
#define ETNA_MAX_TEMPS (64) /* max temp register count of all Vivante hw */
|
||||
#define ETNA_MAX_TOKENS (2048)
|
||||
#define ETNA_MAX_IMM (1024) /* max const+imm in 32-bit words */
|
||||
#define ETNA_MAX_DECL (2048) /* max declarations */
|
||||
#define ETNA_MAX_DEPTH (32)
|
||||
#define ETNA_MAX_INSTRUCTIONS (2048)
|
||||
|
||||
@@ -160,19 +159,10 @@ etna_dump_shader(const struct etna_shader_variant *shader);
|
||||
|
||||
bool
|
||||
etna_link_shader(struct etna_shader_link_info *info,
|
||||
const struct etna_shader_variant *vs, const struct etna_shader_variant *fs);
|
||||
const struct etna_shader_variant *vs,
|
||||
const struct etna_shader_variant *fs);
|
||||
|
||||
void
|
||||
etna_destroy_shader(struct etna_shader_variant *shader);
|
||||
|
||||
/* NIR compiler */
|
||||
|
||||
bool
|
||||
etna_compile_shader_nir(struct etna_shader_variant *shader);
|
||||
|
||||
bool
|
||||
etna_link_shader_nir(struct etna_shader_link_info *info,
|
||||
const struct etna_shader_variant *vs,
|
||||
const struct etna_shader_variant *fs);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1054,7 +1054,7 @@ fill_vs_mystery(struct etna_shader_variant *v)
|
||||
}
|
||||
|
||||
bool
|
||||
etna_compile_shader_nir(struct etna_shader_variant *v)
|
||||
etna_compile_shader(struct etna_shader_variant *v)
|
||||
{
|
||||
if (unlikely(!v))
|
||||
return false;
|
||||
@@ -1229,9 +1229,9 @@ etna_shader_vs_lookup(const struct etna_shader_variant *sobj,
|
||||
}
|
||||
|
||||
bool
|
||||
etna_link_shader_nir(struct etna_shader_link_info *info,
|
||||
const struct etna_shader_variant *vs,
|
||||
const struct etna_shader_variant *fs)
|
||||
etna_link_shader(struct etna_shader_link_info *info,
|
||||
const struct etna_shader_variant *vs,
|
||||
const struct etna_shader_variant *fs)
|
||||
{
|
||||
int comp_ofs = 0;
|
||||
/* For each fragment input we need to find the associated vertex shader
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -54,9 +54,8 @@
|
||||
#define ETNA_DBG_DRAW_STALL 0x400000 /* Stall FE/PE after every draw op */
|
||||
#define ETNA_DBG_SHADERDB 0x800000 /* dump program compile information */
|
||||
#define ETNA_DBG_NO_SINGLEBUF 0x1000000 /* disable single buffer feature */
|
||||
#define ETNA_DBG_TGSI 0x2000000 /* use old TGSI compiler */
|
||||
#define ETNA_DBG_DEQP 0x4000000 /* Hacks to run dEQP GLES3 tests */
|
||||
#define ETNA_DBG_NOCACHE 0x8000000 /* Disable shader cache */
|
||||
#define ETNA_DBG_DEQP 0x2000000 /* Hacks to run dEQP GLES3 tests */
|
||||
#define ETNA_DBG_NOCACHE 0x4000000 /* Disable shader cache */
|
||||
|
||||
extern int etna_mesa_debug; /* set in etnaviv_screen.c from ETNA_MESA_DEBUG */
|
||||
|
||||
|
||||
@@ -34,9 +34,6 @@
|
||||
void
|
||||
etna_disk_cache_init(struct etna_compiler *compiler, const char *renderer)
|
||||
{
|
||||
if (etna_mesa_debug & ETNA_DBG_TGSI)
|
||||
return;
|
||||
|
||||
if (etna_mesa_debug & ETNA_DBG_NOCACHE)
|
||||
return;
|
||||
|
||||
|
||||
@@ -72,7 +72,6 @@ static const struct debug_named_value etna_debug_options[] = {
|
||||
{"draw_stall", ETNA_DBG_DRAW_STALL, "Stall FE/PE after each rendered primitive"},
|
||||
{"shaderdb", ETNA_DBG_SHADERDB, "Enable shaderdb output"},
|
||||
{"no_singlebuffer",ETNA_DBG_NO_SINGLEBUF, "Disable single buffer feature"},
|
||||
{"tgsi", ETNA_DBG_TGSI, "use old TGSI compiler"},
|
||||
{"deqp", ETNA_DBG_DEQP, "Hacks to run dEQP GLES3 tests"}, /* needs MESA_GLES_VERSION_OVERRIDE=3.0 */
|
||||
{"nocache", ETNA_DBG_NOCACHE, "Disable shader cache"},
|
||||
DEBUG_NAMED_VALUE_END
|
||||
@@ -161,7 +160,7 @@ etna_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
||||
return screen->drm_version >= ETNA_DRM_VERSION_FENCE_FD;
|
||||
case PIPE_CAP_TGSI_FS_POSITION_IS_SYSVAL:
|
||||
case PIPE_CAP_TGSI_FS_FACE_IS_INTEGER_SYSVAL: /* note: not integer */
|
||||
return !DBG_ENABLED(ETNA_DBG_TGSI);
|
||||
return 1;
|
||||
case PIPE_CAP_TGSI_FS_POINT_IS_SYSVAL:
|
||||
return 0;
|
||||
|
||||
@@ -182,10 +181,7 @@ etna_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
||||
return VIV_FEATURE(screen, chipMinorFeatures1, HALTI0);
|
||||
|
||||
case PIPE_CAP_ALPHA_TEST:
|
||||
if (!DBG_ENABLED(ETNA_DBG_TGSI))
|
||||
return !VIV_FEATURE(screen, chipMinorFeatures7, PE_NO_ALPHA_TEST);
|
||||
else
|
||||
return 1;
|
||||
return !VIV_FEATURE(screen, chipMinorFeatures7, PE_NO_ALPHA_TEST);
|
||||
|
||||
/* Unsupported features. */
|
||||
case PIPE_CAP_TEXTURE_BUFFER_OFFSET_ALIGNMENT:
|
||||
@@ -213,7 +209,7 @@ etna_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
||||
|
||||
/* Texturing. */
|
||||
case PIPE_CAP_TEXTURE_SHADOW_MAP:
|
||||
return !DBG_ENABLED(ETNA_DBG_TGSI);
|
||||
return 1;
|
||||
case PIPE_CAP_MAX_TEXTURE_2D_SIZE:
|
||||
case PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS: /* TODO: verify */
|
||||
return screen->specs.max_texture_size;
|
||||
@@ -338,7 +334,7 @@ etna_screen_get_shader_param(struct pipe_screen *pscreen,
|
||||
enum pipe_shader_cap param)
|
||||
{
|
||||
struct etna_screen *screen = etna_screen(pscreen);
|
||||
bool ubo_enable = screen->specs.halti >= 2 && !DBG_ENABLED(ETNA_DBG_TGSI);
|
||||
bool ubo_enable = screen->specs.halti >= 2;
|
||||
|
||||
if (DBG_ENABLED(ETNA_DBG_DEQP))
|
||||
ubo_enable = true;
|
||||
@@ -397,14 +393,14 @@ etna_screen_get_shader_param(struct pipe_screen *pscreen,
|
||||
case PIPE_SHADER_CAP_GLSL_16BIT_CONSTS:
|
||||
return 0;
|
||||
case PIPE_SHADER_CAP_INTEGERS:
|
||||
return !DBG_ENABLED(ETNA_DBG_TGSI) && screen->specs.halti >= 2;
|
||||
return screen->specs.halti >= 2;
|
||||
case PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS:
|
||||
case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS:
|
||||
return shader == PIPE_SHADER_FRAGMENT
|
||||
? screen->specs.fragment_sampler_count
|
||||
: screen->specs.vertex_sampler_count;
|
||||
case PIPE_SHADER_CAP_PREFERRED_IR:
|
||||
return !DBG_ENABLED(ETNA_DBG_TGSI) ? PIPE_SHADER_IR_NIR : PIPE_SHADER_IR_TGSI;
|
||||
return PIPE_SHADER_IR_NIR;
|
||||
case PIPE_SHADER_CAP_MAX_CONST_BUFFER_SIZE:
|
||||
if (ubo_enable)
|
||||
return 16384; /* 16384 so state tracker enables UBOs */
|
||||
@@ -419,7 +415,7 @@ etna_screen_get_shader_param(struct pipe_screen *pscreen,
|
||||
return false;
|
||||
case PIPE_SHADER_CAP_SUPPORTED_IRS:
|
||||
return (1 << PIPE_SHADER_IR_TGSI) |
|
||||
(!DBG_ENABLED(ETNA_DBG_TGSI) ? 1 << PIPE_SHADER_IR_NIR : 0);
|
||||
(1 << PIPE_SHADER_IR_NIR);
|
||||
case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT:
|
||||
return 32;
|
||||
case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS:
|
||||
|
||||
@@ -132,10 +132,7 @@ etna_link_shaders(struct etna_context *ctx, struct compiled_shader_state *cs,
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!DBG_ENABLED(ETNA_DBG_TGSI))
|
||||
failed = etna_link_shader_nir(&link, vs, fs);
|
||||
else
|
||||
failed = etna_link_shader(&link, vs, fs);
|
||||
failed = etna_link_shader(&link, vs, fs);
|
||||
|
||||
if (failed) {
|
||||
/* linking failed: some fs inputs do not have corresponding
|
||||
@@ -468,11 +465,8 @@ etna_create_shader_state(struct pipe_context *pctx,
|
||||
shader->specs = &screen->specs;
|
||||
shader->compiler = screen->compiler;
|
||||
|
||||
if (!DBG_ENABLED(ETNA_DBG_TGSI))
|
||||
shader->nir = (pss->type == PIPE_SHADER_IR_NIR) ? pss->ir.nir :
|
||||
tgsi_to_nir(pss->tokens, pctx->screen, false);
|
||||
else
|
||||
shader->tokens = tgsi_dup_tokens(pss->tokens);
|
||||
shader->nir = (pss->type == PIPE_SHADER_IR_NIR) ? pss->ir.nir :
|
||||
tgsi_to_nir(pss->tokens, pctx->screen, false);
|
||||
|
||||
etna_disk_cache_init_shader_key(compiler, shader);
|
||||
|
||||
|
||||
@@ -41,7 +41,6 @@ files_etnaviv = files(
|
||||
'etnaviv_compiler_nir_emit.c',
|
||||
'etnaviv_compiler_nir_liveness.c',
|
||||
'etnaviv_compiler_nir_ra.c',
|
||||
'etnaviv_compiler_tgsi.c',
|
||||
'etnaviv_context.c',
|
||||
'etnaviv_context.h',
|
||||
'etnaviv_debug.h',
|
||||
|
||||
Reference in New Issue
Block a user