[Mesa-dev] [PATCH 1/2] gallium: add pipe_depth_state::disable_occlusion_queries

Ilia Mirkin imirkin at alum.mit.edu
Thu Apr 7 03:34:02 UTC 2016


Is it just occlusion queries, or all queries? (e.g. primitives
generated, etc). I think all queries... we need a mechanism to tell
gallium to pause all the queries (i.e. save off the values) and then
resume them.

On Wed, Apr 6, 2016 at 9:22 PM, Roland Scheidegger <sroland at vmware.com> wrote:
> Where's the doc bits...
>
> But aside from that, this doesn't look quite right to me. Doesn't really
> feel like depth state (more like context one to suspend queries), and
> more importantly it should most likely apply to all queries, not just
> occlusion ones (making it definitely no longer dsa state).
>
> Roland
>
> Am 07.04.2016 um 03:00 schrieb Marek Olšák:
>> From: Marek Olšák <marek.olsak at 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);
>>     }
>>
>>
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list