summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanley Chery <nanley.g.chery@intel.com>2018-10-26 14:52:35 -0700
committerNanley Chery <nanley.g.chery@intel.com>2018-11-20 15:22:09 -0800
commit97e825aa53e28de7e128b3c933cc93692501d501 (patch)
tree49176cf8b935ff9633f196a2e195b208410f5eeb
parent3486fe655a2d62e42c8a9d0571df6dff753a9af6 (diff)
intel/blorp: Set up some other state for WM_HZ_OPwip/fix/hiz-bugs
TODO: Test what happens when setting each of those bits to their opposite value. XXX: Split each addition into a patch. XXX: Finish writing the documentation.
-rw-r--r--src/intel/blorp/blorp_genX_exec.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/intel/blorp/blorp_genX_exec.h b/src/intel/blorp/blorp_genX_exec.h
index 065980616ec..91ddff80933 100644
--- a/src/intel/blorp/blorp_genX_exec.h
+++ b/src/intel/blorp/blorp_genX_exec.h
@@ -1617,6 +1617,10 @@ blorp_emit_gen8_hiz_op(struct blorp_batch *batch,
if (params->stencil.enabled)
assert(params->hiz_op == ISL_AUX_OP_FAST_CLEAR);
+ blorp_emit(batch, GENX(3DSTATE_PS_BLEND), ps_blend) {
+ ps_blend.AlphaTestEnable = false;
+ }
+
/* From the BDW PRM Volume 2, 3DSTATE_WM_HZ_OP:
*
* 3DSTATE_MULTISAMPLE packet must be used prior to this packet to change
@@ -1628,6 +1632,35 @@ blorp_emit_gen8_hiz_op(struct blorp_batch *batch,
*/
blorp_emit_3dstate_multisample(batch, params);
+ /* From the BDW PRM Volume 2, 3DSTATE_WM_HZ_OP:
+ *
+ * 3DSTATE_RASTER if used must be programmed prior to using this packet.
+ *
+ * The formula for WM_INT::Multisample Rasterization Mode shows that
+ * 3DSTATE_RASTER::Force Multisampling has the ability to override
+ * 3DSTATE_WM_HZ_OP::Number of Multisamples. Disable the override by setting
+ * it to false.
+ */
+ blorp_emit(batch, GENX(3DSTATE_RASTER), raster) {
+ raster.ForceMultisampling = false;
+ }
+
+ /* From the BDW+ HW docs XXX:
+ *
+ * WM_INT::Pixel Shader Computed Depth Mode =
+ * (3DSTATE_PS_EXTRA::ForceComputedDepth == Force) ?
+ * 3DSTATE_PS_EXTRA::Pixel Shader Computed Depth Mode :
+ * (WM_INT::WM_HZ_OP || WM_INT::RT Independent Rasterization Enable ) ?
+ * PSCDEPTH_OFF:
+ * 3DSTATE_PS_EXTRA::Pixel Shader Computed Depth Mode
+ *
+ * To avoid 3DSTATE_PS_EXTRA::ForceComputedDepth from overriding
+ * 3DSTATE_WM_HZ_OP's preverence of PSCDEPTH_OFF, set it to false.
+ */
+ blorp_emit(batch, GENX(3DSTATE_PS_EXTRA), psx) {
+ psx.ForceComputedDepth = false;
+ }
+
/* From the BDW PRM Volume 7, Depth Buffer Clear:
*
* The clear value must be between the min and max depth values