From: Marek Olšák <marek.ol...@amd.com> Since occlusion queries count Z passes, the depth state seems to be the best place. --- src/gallium/auxiliary/hud/hud_context.c | 2 ++ src/gallium/auxiliary/postprocess/pp_mlaa.c | 1 + src/gallium/auxiliary/postprocess/pp_program.c | 1 + src/gallium/auxiliary/util/u_blit.c | 1 + src/gallium/auxiliary/util/u_blitter.c | 1 + src/gallium/include/pipe/p_state.h | 1 + src/mesa/state_tracker/st_cb_clear.c | 2 ++ src/mesa/state_tracker/st_cb_texture.c | 1 + 8 files changed, 10 insertions(+)
diff --git a/src/gallium/auxiliary/hud/hud_context.c b/src/gallium/auxiliary/hud/hud_context.c index 4673458..2b2fabb 100644 --- a/src/gallium/auxiliary/hud/hud_context.c +++ b/src/gallium/auxiliary/hud/hud_context.c @@ -1178,6 +1178,8 @@ hud_create(struct pipe_context *pipe, struct cso_context *cso) hud->alpha_blend.rt[0].alpha_src_factor = PIPE_BLENDFACTOR_ZERO; hud->alpha_blend.rt[0].alpha_dst_factor = PIPE_BLENDFACTOR_ONE; + hud->dsa.depth.disable_occlusion_queries = 1; + /* fragment shader */ hud->fs_color = util_make_fragment_passthrough_shader(pipe, diff --git a/src/gallium/auxiliary/postprocess/pp_mlaa.c b/src/gallium/auxiliary/postprocess/pp_mlaa.c index a3f58b5..2640340 100644 --- a/src/gallium/auxiliary/postprocess/pp_mlaa.c +++ b/src/gallium/auxiliary/postprocess/pp_mlaa.c @@ -124,6 +124,7 @@ pp_jimenezmlaa_run(struct pp_queue_t *ppq, struct pipe_resource *in, mstencil.stencil[0].fail_op = PIPE_STENCIL_OP_KEEP; mstencil.stencil[0].zfail_op = PIPE_STENCIL_OP_KEEP; mstencil.stencil[0].zpass_op = PIPE_STENCIL_OP_REPLACE; + mstencil.depth.disable_occlusion_queries = 1; p->framebuffer.zsbuf = ppq->stencils; diff --git a/src/gallium/auxiliary/postprocess/pp_program.c b/src/gallium/auxiliary/postprocess/pp_program.c index 811f1fb..8b468eb 100644 --- a/src/gallium/auxiliary/postprocess/pp_program.c +++ b/src/gallium/auxiliary/postprocess/pp_program.c @@ -56,6 +56,7 @@ pp_init_prog(struct pp_queue_t *ppq, struct pipe_context *pipe, p->screen = pipe->screen; p->pipe = pipe; p->cso = cso; + p->depthstencil.depth.disable_occlusion_queries = 1; { static const float verts[4][2][4] = { diff --git a/src/gallium/auxiliary/util/u_blit.c b/src/gallium/auxiliary/util/u_blit.c index 22c40d1..2711899 100644 --- a/src/gallium/auxiliary/util/u_blit.c +++ b/src/gallium/auxiliary/util/u_blit.c @@ -93,6 +93,7 @@ util_create_blit(struct pipe_context *pipe, struct cso_context *cso) /* disabled blending/masking */ ctx->blend_write_color.rt[0].colormask = PIPE_MASK_RGBA; + ctx->dsa_keep_depthstencil.depth.disable_occlusion_queries = 1; /* rasterizer */ ctx->rasterizer.cull_face = PIPE_FACE_NONE; diff --git a/src/gallium/auxiliary/util/u_blitter.c b/src/gallium/auxiliary/util/u_blitter.c index 43fbd8e..790562a 100644 --- a/src/gallium/auxiliary/util/u_blitter.c +++ b/src/gallium/auxiliary/util/u_blitter.c @@ -226,6 +226,7 @@ struct blitter_context *util_blitter_create(struct pipe_context *pipe) /* depth stencil alpha state objects */ memset(&dsa, 0, sizeof(dsa)); + dsa.depth.disable_occlusion_queries = 1; ctx->dsa_keep_depth_stencil = pipe->create_depth_stencil_alpha_state(pipe, &dsa); diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h index 5ab5372..681e6ec 100644 --- a/src/gallium/include/pipe/p_state.h +++ b/src/gallium/include/pipe/p_state.h @@ -225,6 +225,7 @@ struct pipe_depth_state unsigned writemask:1; /**< allow depth buffer writes? */ unsigned func:3; /**< depth test func (PIPE_FUNC_x) */ unsigned bounds_test:1; /**< depth bounds test enabled? */ + unsigned disable_occlusion_queries:1; /**< force off occlusion queries */ float bounds_min; /**< minimum depth bound */ float bounds_max; /**< maximum depth bound */ }; diff --git a/src/mesa/state_tracker/st_cb_clear.c b/src/mesa/state_tracker/st_cb_clear.c index 5580146..6216eab 100644 --- a/src/mesa/state_tracker/st_cb_clear.c +++ b/src/mesa/state_tracker/st_cb_clear.c @@ -243,6 +243,8 @@ clear_with_quad(struct gl_context *ctx, unsigned clear_buffers) { struct pipe_depth_stencil_alpha_state depth_stencil; memset(&depth_stencil, 0, sizeof(depth_stencil)); + depth_stencil.depth.disable_occlusion_queries = 1; + if (clear_buffers & PIPE_CLEAR_DEPTH) { depth_stencil.depth.enabled = 1; depth_stencil.depth.writemask = 1; diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index 3980f5d..1802cde 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -1492,6 +1492,7 @@ try_pbo_upload_common(struct gl_context *ctx, { struct pipe_depth_stencil_alpha_state dsa; memset(&dsa, 0, sizeof(dsa)); + dsa.depth.disable_occlusion_queries = 1; cso_set_depth_stencil_alpha(cso, &dsa); } -- 2.5.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev