mesa/st: fix regression for basic drivers

Drivers that doesn't support conditional rendering can't really require
respecting conditional rendering, so let's not ask for it to be
respected in the first place.

This fixes a problem where util_can_blit_via_copy_region started
unconditionally rejecting all blits that originate from
glBlitFramebuffer, even for drivers where this can't possibly be a
problem.

Fixes: 767f70dfe1 ("gallium/util: fix util_can_blit_via_copy_region for conditional rendering")
Reviewed-by: Zoltán Böszörményi <zboszor@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8378>
This commit is contained in:
Erik Faye-Lund 2021-01-08 11:25:34 +01:00 committed by Marge Bot
parent 8f5fb14d68
commit eb2a4a7dee
3 changed files with 4 additions and 1 deletions

View file

@ -170,7 +170,7 @@ st_BlitFramebuffer(struct gl_context *ctx,
st_window_rectangles_to_blit(ctx, &blit);
blit.filter = pFilter;
blit.render_condition_enable = TRUE;
blit.render_condition_enable = st->has_conditional_render;
blit.alpha_blend = FALSE;
if (mask & GL_COLOR_BUFFER_BIT) {

View file

@ -709,6 +709,8 @@ st_create_context_priv(struct gl_context *ctx, struct pipe_context *pipe,
!screen->get_param(screen, PIPE_CAP_CLIP_PLANES);
st->prefer_real_buffer_in_constbuf0 =
screen->get_param(screen, PIPE_CAP_PREFER_REAL_BUFFER_IN_CONSTBUF0);
st->has_conditional_render =
screen->get_param(screen, PIPE_CAP_CONDITIONAL_RENDER);
st->allow_st_finalize_nir_twice = screen->finalize_nir != NULL;
st->has_hw_atomics =

View file

@ -159,6 +159,7 @@ struct st_context
boolean lower_two_sided_color;
boolean lower_ucp;
boolean prefer_real_buffer_in_constbuf0;
boolean has_conditional_render;
/* There are consequences for drivers wanting to call st_finalize_nir
* twice, once before shader caching and once after lowering for shader