mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 08:58:02 +02:00
dri/nouveau: Force a "slow" Z clear if we're getting a new depth buffer.
This commit is contained in:
parent
25328509c9
commit
a00eec5295
1 changed files with 12 additions and 0 deletions
|
|
@ -180,6 +180,7 @@ void
|
|||
nouveau_update_renderbuffers(__DRIcontext *dri_ctx, __DRIdrawable *draw)
|
||||
{
|
||||
struct gl_context *ctx = dri_ctx->driverPrivate;
|
||||
struct nouveau_context *nctx = to_nouveau_context(ctx);
|
||||
__DRIscreen *screen = dri_ctx->driScreenPriv;
|
||||
struct gl_framebuffer *fb = draw->driverPrivate;
|
||||
struct nouveau_framebuffer *nfb = to_nouveau_framebuffer(fb);
|
||||
|
|
@ -211,6 +212,7 @@ nouveau_update_renderbuffers(__DRIcontext *dri_ctx, __DRIdrawable *draw)
|
|||
for (i = 0; i < count; i++) {
|
||||
struct gl_renderbuffer *rb;
|
||||
struct nouveau_surface *s;
|
||||
uint32_t old_name;
|
||||
int index;
|
||||
|
||||
switch (buffers[i].attachment) {
|
||||
|
|
@ -240,6 +242,16 @@ nouveau_update_renderbuffers(__DRIcontext *dri_ctx, __DRIdrawable *draw)
|
|||
s->pitch = buffers[i].pitch;
|
||||
s->cpp = buffers[i].cpp;
|
||||
|
||||
if (index == BUFFER_DEPTH && s->bo) {
|
||||
ret = nouveau_bo_handle_get(s->bo, &old_name);
|
||||
/*
|
||||
* Disable fast Z clears in the next frame, the
|
||||
* depth buffer contents are undefined.
|
||||
*/
|
||||
if (!ret && old_name != buffers[i].name)
|
||||
nctx->hierz.clear_seq = 0;
|
||||
}
|
||||
|
||||
nouveau_bo_ref(NULL, &s->bo);
|
||||
ret = nouveau_bo_handle_ref(context_dev(ctx),
|
||||
buffers[i].name, &s->bo);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue