mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 06:58:05 +02:00
zink: manually re-set framebuffer after msrtss replicate blit
with the new zsbuf elimination handling, the fb state calculated in
u_blitter's fb restore may be incorrect if the zsbuf has indeed been
eliminated, so ensure the right fb is stored to be reapplied so that
misrenders will be avoided
fixes some crashes/misrenders in webgl
(cherry picked from commit ec0860b401)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22598>
This commit is contained in:
parent
475cc6a516
commit
9c24784b7c
2 changed files with 5 additions and 1 deletions
|
|
@ -139,7 +139,7 @@
|
|||
"description": "zink: manually re-set framebuffer after msrtss replicate blit",
|
||||
"nominated": false,
|
||||
"nomination_type": null,
|
||||
"resolution": 4,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null
|
||||
},
|
||||
|
|
|
|||
|
|
@ -769,6 +769,7 @@ zink_begin_render_pass(struct zink_context *ctx)
|
|||
if (ctx->framebuffer->rp->state.msaa_expand_mask) {
|
||||
uint32_t rp_state = ctx->gfx_pipeline_state.rp_state;
|
||||
struct zink_render_pass *rp = ctx->gfx_pipeline_state.render_pass;
|
||||
struct zink_framebuffer *fb = ctx->framebuffer;
|
||||
|
||||
u_foreach_bit(i, ctx->framebuffer->rp->state.msaa_expand_mask) {
|
||||
struct zink_ctx_surface *csurf = (struct zink_ctx_surface*)ctx->fb_state.cbufs[i];
|
||||
|
|
@ -801,6 +802,9 @@ zink_begin_render_pass(struct zink_context *ctx)
|
|||
ctx->fb_changed = ctx->rp_changed = false;
|
||||
ctx->gfx_pipeline_state.rp_state = rp_state;
|
||||
ctx->gfx_pipeline_state.render_pass = rp;
|
||||
/* manually re-set fb: depth buffer may have been eliminated */
|
||||
ctx->framebuffer = fb;
|
||||
ctx->framebuffer->rp = rp;
|
||||
}
|
||||
assert(ctx->gfx_pipeline_state.render_pass);
|
||||
return begin_render_pass(ctx);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue