summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/intel/blorp/blorp_genX_exec.h27
1 files changed, 15 insertions, 12 deletions
diff --git a/src/intel/blorp/blorp_genX_exec.h b/src/intel/blorp/blorp_genX_exec.h
index 40387067f3f..69424c44370 100644
--- a/src/intel/blorp/blorp_genX_exec.h
+++ b/src/intel/blorp/blorp_genX_exec.h
@@ -914,42 +914,45 @@ blorp_emit_depth_stencil_state(struct blorp_batch *batch,
const struct blorp_params *params)
{
#if GEN_GEN >= 8
+ struct GENX(3DSTATE_WM_DEPTH_STENCIL) ds = {
+ GENX(3DSTATE_WM_DEPTH_STENCIL_header),
+ };
+#else
+ struct GENX(DEPTH_STENCIL_STATE) ds = { 0 };
+#endif
- /* On gen8+, DEPTH_STENCIL state is simply an instruction */
- blorp_emit(batch, GENX(3DSTATE_WM_DEPTH_STENCIL), ds);
- return 0;
-
-#else /* GEN_GEN <= 7 */
+ ds.DepthBufferWriteEnable = params->depth.addr.buffer != NULL;
/* See the following sections of the Sandy Bridge PRM, Volume 1, Part2:
* - 7.5.3.1 Depth Buffer Clear
* - 7.5.3.2 Depth Buffer Resolve
* - 7.5.3.3 Hierarchical Depth Buffer Resolve
*/
- struct GENX(DEPTH_STENCIL_STATE) ds = {
- .DepthBufferWriteEnable = true,
- };
-
if (params->hiz_op == BLORP_HIZ_OP_DEPTH_RESOLVE) {
ds.DepthTestEnable = true;
ds.DepthTestFunction = COMPAREFUNCTION_NEVER;
}
+#if GEN_GEN >= 8
+ uint32_t offset = 0;
+ uint32_t *dw = blorp_emit_dwords(batch,
+ GENX(3DSTATE_WM_DEPTH_STENCIL_length));
+ GENX(3DSTATE_WM_DEPTH_STENCIL_pack)(NULL, dw, &ds);
+#else
uint32_t offset;
void *state = blorp_alloc_dynamic_state(batch, AUB_TRACE_DEPTH_STENCIL_STATE,
GENX(DEPTH_STENCIL_STATE_length) * 4,
64, &offset);
GENX(DEPTH_STENCIL_STATE_pack)(NULL, state, &ds);
+#endif
-#if GEN_GEN >= 7
+#if GEN_GEN == 7
blorp_emit(batch, GENX(3DSTATE_DEPTH_STENCIL_STATE_POINTERS), sp) {
sp.PointertoDEPTH_STENCIL_STATE = offset;
}
#endif
return offset;
-
-#endif /* GEN_GEN */
}
struct surface_state_info {