i965: Fix fast clear of depth buffers.
From section 4.4.7 (Layered Framebuffers) of the GLSL 3.2 spec:
When the Clear or ClearBuffer* commands are used to clear a
layered framebuffer attachment, all layers of the attachment are
cleared.
This patch fixes the fast depth clear path.
Fixes piglit test "spec/!OpenGL 3.2/layered-rendering/clear-depth".
Cc: "10.0" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
@@ -181,8 +181,16 @@ brw_fast_clear_depth(struct gl_context *ctx)
|
||||
*/
|
||||
intel_batchbuffer_emit_mi_flush(brw);
|
||||
|
||||
intel_hiz_exec(brw, mt, depth_irb->mt_level, depth_irb->mt_layer,
|
||||
GEN6_HIZ_OP_DEPTH_CLEAR);
|
||||
if (fb->NumLayers > 0) {
|
||||
assert(fb->NumLayers == depth_irb->mt->level[depth_irb->mt_level].depth);
|
||||
for (unsigned layer = 0; layer < fb->NumLayers; layer++) {
|
||||
intel_hiz_exec(brw, mt, depth_irb->mt_level, layer,
|
||||
GEN6_HIZ_OP_DEPTH_CLEAR);
|
||||
}
|
||||
} else {
|
||||
intel_hiz_exec(brw, mt, depth_irb->mt_level, depth_irb->mt_layer,
|
||||
GEN6_HIZ_OP_DEPTH_CLEAR);
|
||||
}
|
||||
|
||||
if (brw->gen == 6) {
|
||||
/* From the Sandy Bridge PRM, volume 2 part 1, page 314:
|
||||
|
||||
Reference in New Issue
Block a user