mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 07:08:04 +02:00
r300: Fix Z buffer re-emit after window resize
We used to not always correctly re-emit the Z buffer size in all cases, in particular the clear path, and invalidated state was not always picked up correctly. This fixes a bug where the kernel CS checker correctly complains about a Z buffer that is too small. Note that this bug was probably only visible with ridiculously high framerates, i.e. glxgears. Signed-off-by: Nicolai Hähnle <nhaehnle@gmail.com>
This commit is contained in:
parent
fc3d564dae
commit
3d21e3d3a2
2 changed files with 9 additions and 5 deletions
|
|
@ -168,18 +168,21 @@ static void r300ClearBuffer(r300ContextPtr r300, int flags,
|
|||
}
|
||||
#if 1
|
||||
if (flags & (CLEARBUFFER_DEPTH | CLEARBUFFER_STENCIL)) {
|
||||
assert(rrbd != 0);
|
||||
cbpitch = (rrbd->pitch / rrbd->cpp);
|
||||
uint32_t zbpitch = (rrbd->pitch / rrbd->cpp);
|
||||
if (rrbd->bo->flags & RADEON_BO_FLAGS_MACRO_TILE){
|
||||
cbpitch |= R300_DEPTHMACROTILE_ENABLE;
|
||||
zbpitch |= R300_DEPTHMACROTILE_ENABLE;
|
||||
}
|
||||
if (rrbd->bo->flags & RADEON_BO_FLAGS_MICRO_TILE){
|
||||
cbpitch |= R300_DEPTHMICROTILE_TILED;
|
||||
zbpitch |= R300_DEPTHMICROTILE_TILED;
|
||||
}
|
||||
BEGIN_BATCH_NO_AUTOSTATE(6);
|
||||
OUT_BATCH_REGSEQ(R300_ZB_DEPTHOFFSET, 1);
|
||||
OUT_BATCH_RELOC(0, rrbd->bo, 0, 0, RADEON_GEM_DOMAIN_VRAM, 0);
|
||||
OUT_BATCH_REGVAL(R300_ZB_DEPTHPITCH, cbpitch);
|
||||
OUT_BATCH_REGSEQ(R300_ZB_DEPTHPITCH, 1);
|
||||
if (!r300->radeon.radeonScreen->kernel_mm)
|
||||
OUT_BATCH(zbpitch);
|
||||
else
|
||||
OUT_BATCH_RELOC(zbpitch, rrbd->bo, zbpitch, 0, RADEON_GEM_DOMAIN_VRAM, 0);
|
||||
END_BATCH();
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -2234,6 +2234,7 @@ static void r300InvalidateState(GLcontext * ctx, GLuint new_state)
|
|||
_mesa_update_draw_buffer_bounds(ctx);
|
||||
|
||||
R300_STATECHANGE(r300, cb);
|
||||
R300_STATECHANGE(r300, zb);
|
||||
}
|
||||
|
||||
r300->radeon.NewGLState |= new_state;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue