etnaviv: disable earlyZ when shader writes fragment depth
Fixes the following piglit test: fragdepth_gles2 Signed-off-by: Jonathan Marek <jonathan@marek.ca> Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
This commit is contained in:
@@ -451,9 +451,10 @@ etna_emit_state(struct etna_context *ctx)
|
|||||||
: ctx->shader_state.PS_TEMP_REGISTER_CONTROL);
|
: ctx->shader_state.PS_TEMP_REGISTER_CONTROL);
|
||||||
/*01010*/ EMIT_STATE(PS_CONTROL, ctx->shader_state.PS_CONTROL);
|
/*01010*/ EMIT_STATE(PS_CONTROL, ctx->shader_state.PS_CONTROL);
|
||||||
}
|
}
|
||||||
if (unlikely(dirty & (ETNA_DIRTY_ZSA | ETNA_DIRTY_FRAMEBUFFER))) {
|
if (unlikely(dirty & (ETNA_DIRTY_ZSA | ETNA_DIRTY_FRAMEBUFFER | ETNA_DIRTY_SHADER))) {
|
||||||
uint32_t val = etna_zsa_state(ctx->zsa)->PE_DEPTH_CONFIG;
|
/*01400*/ EMIT_STATE(PE_DEPTH_CONFIG, (etna_zsa_state(ctx->zsa)->PE_DEPTH_CONFIG |
|
||||||
/*01400*/ EMIT_STATE(PE_DEPTH_CONFIG, val | ctx->framebuffer.PE_DEPTH_CONFIG);
|
ctx->framebuffer.PE_DEPTH_CONFIG) &
|
||||||
|
ctx->shader_state.PE_DEPTH_CONFIG);
|
||||||
}
|
}
|
||||||
if (unlikely(dirty & (ETNA_DIRTY_VIEWPORT))) {
|
if (unlikely(dirty & (ETNA_DIRTY_VIEWPORT))) {
|
||||||
/*01404*/ EMIT_STATE(PE_DEPTH_NEAR, ctx->viewport.PE_DEPTH_NEAR);
|
/*01404*/ EMIT_STATE(PE_DEPTH_NEAR, ctx->viewport.PE_DEPTH_NEAR);
|
||||||
|
@@ -257,6 +257,7 @@ struct compiled_shader_state {
|
|||||||
uint32_t PS_TEMP_REGISTER_CONTROL_MSAA; /* Adds a temporary if needed to make space for extra input */
|
uint32_t PS_TEMP_REGISTER_CONTROL_MSAA; /* Adds a temporary if needed to make space for extra input */
|
||||||
uint32_t PS_CONTROL;
|
uint32_t PS_CONTROL;
|
||||||
uint32_t PS_START_PC;
|
uint32_t PS_START_PC;
|
||||||
|
uint32_t PE_DEPTH_CONFIG;
|
||||||
uint32_t GL_VARYING_TOTAL_COMPONENTS;
|
uint32_t GL_VARYING_TOTAL_COMPONENTS;
|
||||||
uint32_t GL_VARYING_NUM_COMPONENTS;
|
uint32_t GL_VARYING_NUM_COMPONENTS;
|
||||||
uint32_t GL_VARYING_COMPONENT_USE[2];
|
uint32_t GL_VARYING_COMPONENT_USE[2];
|
||||||
|
@@ -199,6 +199,9 @@ etna_link_shaders(struct etna_context *ctx, struct compiled_shader_state *cs,
|
|||||||
VIVS_GL_HALTI5_SH_SPECIALS_PS_PCOORD_IN((link.pcoord_varying_comp_ofs != -1) ?
|
VIVS_GL_HALTI5_SH_SPECIALS_PS_PCOORD_IN((link.pcoord_varying_comp_ofs != -1) ?
|
||||||
link.pcoord_varying_comp_ofs : 0x7f);
|
link.pcoord_varying_comp_ofs : 0x7f);
|
||||||
|
|
||||||
|
/* mask out early Z bit when frag depth is written */
|
||||||
|
cs->PE_DEPTH_CONFIG = ~COND(fs->ps_depth_out_reg >= 0, VIVS_PE_DEPTH_CONFIG_EARLY_Z);
|
||||||
|
|
||||||
/* reference instruction memory */
|
/* reference instruction memory */
|
||||||
cs->vs_inst_mem_size = vs->code_size;
|
cs->vs_inst_mem_size = vs->code_size;
|
||||||
cs->VS_INST_MEM = vs->code;
|
cs->VS_INST_MEM = vs->code;
|
||||||
|
Reference in New Issue
Block a user