mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 04:58:05 +02:00
intel/blorp: Add support for partial resolves of HiZ-CCS surfaces.
v2: Define additional enum BLORP_OP_HIZ_PARTIAL_RESOLVE to track
partial resolves (Nanley).
v3: Add comment regarding fall back to full resolve on Gfx12.0 (Nanley).
Reviewed-by: Nanley Chery <nanley.g.chery@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31139>
This commit is contained in:
parent
79ab5db71b
commit
cc66f5ff1d
6 changed files with 21 additions and 2 deletions
|
|
@ -687,6 +687,8 @@ iris_hiz_exec(struct iris_context *ice,
|
|||
name = "depth clear";
|
||||
break;
|
||||
case ISL_AUX_OP_PARTIAL_RESOLVE:
|
||||
name = "depth partial resolve";
|
||||
break;
|
||||
case ISL_AUX_OP_NONE:
|
||||
UNREACHABLE("Invalid HiZ op");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ blorp_op_to_intel_measure_snapshot(enum blorp_op op)
|
|||
MAP(HIZ_AMBIGUATE),
|
||||
MAP(HIZ_CLEAR),
|
||||
MAP(HIZ_RESOLVE),
|
||||
MAP(HIZ_PARTIAL_RESOLVE),
|
||||
MAP(MCS_AMBIGUATE),
|
||||
MAP(MCS_COLOR_CLEAR),
|
||||
MAP(MCS_PARTIAL_RESOLVE),
|
||||
|
|
@ -65,6 +66,7 @@ const char *blorp_op_to_name(enum blorp_op op)
|
|||
MAP(HIZ_AMBIGUATE),
|
||||
MAP(HIZ_CLEAR),
|
||||
MAP(HIZ_RESOLVE),
|
||||
MAP(HIZ_PARTIAL_RESOLVE),
|
||||
MAP(MCS_AMBIGUATE),
|
||||
MAP(MCS_COLOR_CLEAR),
|
||||
MAP(MCS_PARTIAL_RESOLVE),
|
||||
|
|
@ -267,13 +269,15 @@ blorp_hiz_op(struct blorp_batch *batch, struct blorp_surf *surf,
|
|||
case ISL_AUX_OP_FULL_RESOLVE:
|
||||
params.op = BLORP_OP_HIZ_RESOLVE;
|
||||
break;
|
||||
case ISL_AUX_OP_PARTIAL_RESOLVE:
|
||||
params.op = BLORP_OP_HIZ_PARTIAL_RESOLVE;
|
||||
break;
|
||||
case ISL_AUX_OP_AMBIGUATE:
|
||||
params.op = BLORP_OP_HIZ_AMBIGUATE;
|
||||
break;
|
||||
case ISL_AUX_OP_FAST_CLEAR:
|
||||
params.op = BLORP_OP_HIZ_CLEAR;
|
||||
break;
|
||||
case ISL_AUX_OP_PARTIAL_RESOLVE:
|
||||
case ISL_AUX_OP_NONE:
|
||||
UNREACHABLE("Invalid HiZ op");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ enum blorp_op {
|
|||
BLORP_OP_HIZ_AMBIGUATE,
|
||||
BLORP_OP_HIZ_CLEAR,
|
||||
BLORP_OP_HIZ_RESOLVE,
|
||||
BLORP_OP_HIZ_PARTIAL_RESOLVE,
|
||||
BLORP_OP_MCS_AMBIGUATE,
|
||||
BLORP_OP_MCS_COLOR_CLEAR,
|
||||
BLORP_OP_MCS_PARTIAL_RESOLVE,
|
||||
|
|
|
|||
|
|
@ -1553,11 +1553,21 @@ blorp_emit_gfx8_hiz_op(struct blorp_batch *batch,
|
|||
assert(params->full_surface_hiz_op);
|
||||
hzp.DepthBufferResolveEnable = true;
|
||||
break;
|
||||
case ISL_AUX_OP_PARTIAL_RESOLVE:
|
||||
#if GFX_VERx10 >= 125
|
||||
hzp.DepthBufferPartialResolveEnable = true;
|
||||
#else
|
||||
/* ISL's state machine may suggest a partial resolve
|
||||
* regardless of the graphics version. Emit a full resolve on
|
||||
* platforms which don't support it.
|
||||
*/
|
||||
hzp.DepthBufferResolveEnable = true;
|
||||
#endif
|
||||
break;
|
||||
case ISL_AUX_OP_AMBIGUATE:
|
||||
assert(params->full_surface_hiz_op);
|
||||
hzp.HierarchicalDepthBufferResolveEnable = true;
|
||||
break;
|
||||
case ISL_AUX_OP_PARTIAL_RESOLVE:
|
||||
case ISL_AUX_OP_NONE:
|
||||
UNREACHABLE("Invalid HIZ op");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1579,6 +1579,7 @@
|
|||
<field name="3D Command Opcode" dword="0" bits="26:24" type="uint" default="0" />
|
||||
<field name="Command SubType" dword="0" bits="28:27" type="uint" default="3" />
|
||||
<field name="Command Type" dword="0" bits="31:29" type="uint" default="3" />
|
||||
<field name="Depth Buffer Partial Resolve Enable" dword="1" bits="9:9" type="bool" />
|
||||
<field name="Number of Multisamples" dword="1" bits="15:13" type="uint" />
|
||||
<field name="Stencil Clear Value" dword="1" bits="23:16" type="uint" />
|
||||
<field name="Stencil Buffer Resolve Enable" dword="1" bits="24:24" type="bool" />
|
||||
|
|
|
|||
|
|
@ -509,6 +509,7 @@ get_color_aux_op(const struct blorp_params *params)
|
|||
case BLORP_OP_HIZ_AMBIGUATE:
|
||||
case BLORP_OP_HIZ_CLEAR:
|
||||
case BLORP_OP_HIZ_RESOLVE:
|
||||
case BLORP_OP_HIZ_PARTIAL_RESOLVE:
|
||||
case BLORP_OP_SLOW_DEPTH_CLEAR:
|
||||
assert(params->fast_clear_op == ISL_AUX_OP_NONE);
|
||||
return ISL_AUX_OP_NONE;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue