From 446062833022a86e2e679ba631931164c9e3467e Mon Sep 17 00:00:00 2001 From: Christian Gmeiner Date: Fri, 14 Feb 2020 11:43:11 +0100 Subject: [PATCH] etnaviv: increase number of supported varyings to 16 No deqp regressions. Signed-off-by: Christian Gmeiner Reviewed-by: Jonathan Marek Tested-by: Marge Bot Part-of: --- src/gallium/drivers/etnaviv/etnaviv_context.c | 1 - src/gallium/drivers/etnaviv/etnaviv_emit.c | 9 ++++++--- src/gallium/drivers/etnaviv/etnaviv_internal.h | 4 ++-- src/gallium/drivers/etnaviv/etnaviv_shader.c | 3 ++- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/gallium/drivers/etnaviv/etnaviv_context.c b/src/gallium/drivers/etnaviv/etnaviv_context.c index 388f9d1306a..76d80589950 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_context.c +++ b/src/gallium/drivers/etnaviv/etnaviv_context.c @@ -399,7 +399,6 @@ etna_reset_gpu_state(struct etna_context *ctx) etna_set_state(stream, VIVS_VS_SAMPLER_BASE, 0x00000020); etna_set_state(stream, VIVS_SH_CONFIG, VIVS_SH_CONFIG_RTNE_ROUNDING); } else { /* Only on pre-HALTI5 */ - etna_set_state(stream, VIVS_GL_UNK03834, 0x00000000); etna_set_state(stream, VIVS_GL_UNK03838, 0x00000000); etna_set_state(stream, VIVS_GL_UNK03854, 0x00000000); } diff --git a/src/gallium/drivers/etnaviv/etnaviv_emit.c b/src/gallium/drivers/etnaviv/etnaviv_emit.c index 46e1719ad71..839361ec2d4 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_emit.c +++ b/src/gallium/drivers/etnaviv/etnaviv_emit.c @@ -145,9 +145,11 @@ emit_halti5_only_state(struct etna_context *ctx, int vs_output_count) } } if (unlikely(dirty & (ETNA_DIRTY_SHADER))) { - /*00A90*/ EMIT_STATE(PA_VARYING_NUM_COMPONENTS(0), ctx->shader_state.GL_VARYING_NUM_COMPONENTS); + /*00A90*/ EMIT_STATE(PA_VARYING_NUM_COMPONENTS(0), ctx->shader_state.GL_VARYING_NUM_COMPONENTS[0]); + /*00A94*/ EMIT_STATE(PA_VARYING_NUM_COMPONENTS(1), ctx->shader_state.GL_VARYING_NUM_COMPONENTS[1]); /*00AA8*/ EMIT_STATE(PA_VS_OUTPUT_COUNT, vs_output_count); - /*01080*/ EMIT_STATE(PS_VARYING_NUM_COMPONENTS(0), ctx->shader_state.GL_VARYING_NUM_COMPONENTS); + /*01080*/ EMIT_STATE(PS_VARYING_NUM_COMPONENTS(0), ctx->shader_state.GL_VARYING_NUM_COMPONENTS[0]); + /*01084*/ EMIT_STATE(PS_VARYING_NUM_COMPONENTS(1), ctx->shader_state.GL_VARYING_NUM_COMPONENTS[1]); /*03888*/ EMIT_STATE(GL_HALTI5_SH_SPECIALS, ctx->shader_state.GL_HALTI5_SH_SPECIALS); } etna_coalesce_end(stream, &coalesce); @@ -199,10 +201,11 @@ emit_pre_halti5_state(struct etna_context *ctx) /*01018*/ EMIT_STATE(PS_START_PC, ctx->shader_state.PS_START_PC); } if (unlikely(dirty & (ETNA_DIRTY_SHADER))) { - /*03820*/ EMIT_STATE(GL_VARYING_NUM_COMPONENTS, ctx->shader_state.GL_VARYING_NUM_COMPONENTS); + /*03820*/ EMIT_STATE(GL_VARYING_NUM_COMPONENTS, ctx->shader_state.GL_VARYING_NUM_COMPONENTS[0]); for (int x = 0; x < 2; ++x) { /*03828*/ EMIT_STATE(GL_VARYING_COMPONENT_USE(x), ctx->shader_state.GL_VARYING_COMPONENT_USE[x]); } + /*03834*/ EMIT_STATE(GL_VARYING_NUM_COMPONENTS2, ctx->shader_state.GL_VARYING_NUM_COMPONENTS[1]); } etna_coalesce_end(stream, &coalesce); } diff --git a/src/gallium/drivers/etnaviv/etnaviv_internal.h b/src/gallium/drivers/etnaviv/etnaviv_internal.h index 22f6d2cd9fa..bdaa7ad6521 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_internal.h +++ b/src/gallium/drivers/etnaviv/etnaviv_internal.h @@ -34,7 +34,7 @@ #include "drm/etnaviv_drmif.h" #define ETNA_NUM_INPUTS (16) -#define ETNA_NUM_VARYINGS 8 +#define ETNA_NUM_VARYINGS 16 #define ETNA_NUM_LOD (14) #define ETNA_NUM_LAYERS (6) #define ETNA_MAX_UNIFORMS (256) @@ -263,7 +263,7 @@ struct compiled_shader_state { uint32_t PS_START_PC; uint32_t PE_DEPTH_CONFIG; uint32_t GL_VARYING_TOTAL_COMPONENTS; - uint32_t GL_VARYING_NUM_COMPONENTS; + uint32_t GL_VARYING_NUM_COMPONENTS[2]; uint32_t GL_VARYING_COMPONENT_USE[2]; uint32_t GL_HALTI5_SH_SPECIALS; uint32_t FE_HALTI5_ID_CONFIG; diff --git a/src/gallium/drivers/etnaviv/etnaviv_shader.c b/src/gallium/drivers/etnaviv/etnaviv_shader.c index 6f6f8d2b9f4..8d288aa6632 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_shader.c +++ b/src/gallium/drivers/etnaviv/etnaviv_shader.c @@ -190,7 +190,8 @@ etna_link_shaders(struct etna_context *ctx, struct compiled_shader_state *cs, cs->GL_VARYING_TOTAL_COMPONENTS = VIVS_GL_VARYING_TOTAL_COMPONENTS_NUM(align(total_components, 2)); - cs->GL_VARYING_NUM_COMPONENTS = num_components[0]; + cs->GL_VARYING_NUM_COMPONENTS[0] = num_components[0]; + cs->GL_VARYING_NUM_COMPONENTS[1] = num_components[1]; cs->GL_VARYING_COMPONENT_USE[0] = component_use[0]; cs->GL_VARYING_COMPONENT_USE[1] = component_use[1]; -- 2.30.2