diff options
Diffstat (limited to 'src/mesa/drivers/dri')
-rw-r--r-- | src/mesa/drivers/dri/i965/gen7_blorp.cpp | 7 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/gen7_misc_state.c | 10 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/gen7_blorp.cpp b/src/mesa/drivers/dri/i965/gen7_blorp.cpp index 2ab7c5787e1..9ce1a758399 100644 --- a/src/mesa/drivers/dri/i965/gen7_blorp.cpp +++ b/src/mesa/drivers/dri/i965/gen7_blorp.cpp @@ -665,6 +665,7 @@ gen7_blorp_emit_depth_stencil_config(struct brw_context *brw, uint8_t mocs = brw->is_haswell ? GEN7_MOCS_L3 : 0; uint32_t surftype; unsigned int depth = MAX2(params->depth.mt->logical_depth0, 1); + unsigned int min_array_element; GLenum gl_target = params->depth.mt->target; unsigned int lod; @@ -689,6 +690,12 @@ gen7_blorp_emit_depth_stencil_config(struct brw_context *brw, break; } + min_array_element = params->depth.layer; + if (params->depth.mt->num_samples > 1) { + /* Convert physical layer to logical layer. */ + min_array_element /= params->depth.mt->num_samples; + } + lod = params->depth.level - params->depth.mt->first_level; /* 3DSTATE_DEPTH_BUFFER */ diff --git a/src/mesa/drivers/dri/i965/gen7_misc_state.c b/src/mesa/drivers/dri/i965/gen7_misc_state.c index acbf79d1c3a..e9167b70239 100644 --- a/src/mesa/drivers/dri/i965/gen7_misc_state.c +++ b/src/mesa/drivers/dri/i965/gen7_misc_state.c @@ -45,6 +45,7 @@ gen7_emit_depth_stencil_hiz(struct brw_context *brw, struct gl_framebuffer *fb = ctx->DrawBuffer; uint32_t surftype; unsigned int depth = 1; + unsigned int min_array_element; GLenum gl_target = GL_TEXTURE_2D; unsigned int lod; const struct intel_renderbuffer *irb = NULL; @@ -79,6 +80,15 @@ gen7_emit_depth_stencil_hiz(struct brw_context *brw, break; } + if (fb->Layered || !irb) { + min_array_element = 0; + } else if (irb->mt->num_samples > 1) { + /* Convert physical layer to logical layer. */ + min_array_element = irb->mt_layer / irb->mt->num_samples; + } else { + min_array_element = irb->mt_layer; + } + lod = irb ? irb->mt_level - irb->mt->first_level : 0; /* _NEW_DEPTH, _NEW_STENCIL, _NEW_BUFFERS */ |