[Mesa-dev] Gallium u_gen_mipmap problem with queries

Marek Olšák maraeo at gmail.com
Wed Mar 12 07:00:13 PDT 2014


Hi everybody,

u_gen_mipmap doesn't disable queries, so all active queries are
incremented, even though mipmap generation shouldn't have any effect
on queries. Hardware drivers can disable queries, but this feature is
not exposed via the gallium interface. Generally, we want to disable
all queries except for the time_elapsed query for u_gen_mipmap. I
propose the following solutions to this problem:

1) Add pipe_context::pause_all_queries(pipe) and
resume_all_queries(pipe). It's self-explanatory.

2) Add pipe_context::pause_query(pipe, query) and resume_query(pipe,
query). This has the disadvantage of having to enumerate all active
queries in u_gen_mipmap.

3) Add pipe_rasterizer_state::disable_all_queries:1, or separate bits
disable_occlusion_queries:1 and disable_streamout_queries:1 (this
includes the primitives_generated query too).

4) Rewrite u_gen_mipmap to use pipe->blit.

Please comment.

Thanks.

Marek


More information about the mesa-dev mailing list