mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-26 14:20:35 +01:00
v3d: Avoid the GFXH-1461 workaround if we have only Z or only S.
This seems like a sensible precaution to avoid extra draws. It doesn't deal with the case of a Z24S8 buffer created by the window system for an application that happens to never use S.
This commit is contained in:
parent
301c32caf4
commit
deecc1ef86
1 changed files with 6 additions and 4 deletions
|
|
@ -671,9 +671,11 @@ v3d_tlb_clear(struct v3d_job *job, unsigned buffers,
|
|||
* if it would be possible to need to emit a load of just one after
|
||||
* we've set up our TLB clears.
|
||||
*/
|
||||
unsigned zsclear = buffers & PIPE_CLEAR_DEPTHSTENCIL;
|
||||
if (zsclear && zsclear != PIPE_CLEAR_DEPTHSTENCIL) {
|
||||
buffers &= ~zsclear;
|
||||
if (buffers & PIPE_CLEAR_DEPTHSTENCIL &&
|
||||
(buffers & PIPE_CLEAR_DEPTHSTENCIL) != PIPE_CLEAR_DEPTHSTENCIL &&
|
||||
job->zsbuf &&
|
||||
util_format_is_depth_and_stencil(job->zsbuf->texture->format)) {
|
||||
buffers &= ~PIPE_CLEAR_DEPTHSTENCIL;
|
||||
}
|
||||
|
||||
for (int i = 0; i < VC5_MAX_DRAW_BUFFERS; i++) {
|
||||
|
|
@ -732,7 +734,7 @@ v3d_tlb_clear(struct v3d_job *job, unsigned buffers,
|
|||
rsc->initialized_buffers |= bit;
|
||||
}
|
||||
|
||||
zsclear = buffers & PIPE_CLEAR_DEPTHSTENCIL;
|
||||
unsigned zsclear = buffers & PIPE_CLEAR_DEPTHSTENCIL;
|
||||
if (zsclear) {
|
||||
struct v3d_resource *rsc =
|
||||
v3d_resource(v3d->framebuffer.zsbuf->texture);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue