drm/i915: Add the gen12_needs_ccs_aux_inv helper
authorjsg <jsg@openbsd.org>
Thu, 31 Aug 2023 04:32:12 +0000 (04:32 +0000)
committerjsg <jsg@openbsd.org>
Thu, 31 Aug 2023 04:32:12 +0000 (04:32 +0000)
From Andi Shyti
c23126f2c76a17b97520d306542cee32bb26fad8 in linux-6.1.y/6.1.50
b2f59e9026038a5bbcbc0019fa58f963138211ee in mainline linux

sys/dev/pci/drm/i915/gt/gen8_engine_cs.c

index b283873..8e28673 100644 (file)
@@ -165,6 +165,18 @@ static u32 preparser_disable(bool state)
        return MI_ARB_CHECK | 1 << 8 | state;
 }
 
+static bool gen12_needs_ccs_aux_inv(struct intel_engine_cs *engine)
+{
+       if (IS_PONTEVECCHIO(engine->i915))
+               return false;
+
+       /*
+        * so far platforms supported by i915 having
+        * flat ccs do not require AUX invalidation
+        */
+       return !HAS_FLAT_CCS(engine->i915);
+}
+
 u32 *gen12_emit_aux_table_inv(struct intel_gt *gt, u32 *cs, const i915_reg_t inv_reg)
 {
        u32 gsi_offset = gt->uncore->gsi_offset;
@@ -236,7 +248,7 @@ int gen12_emit_flush_rcs(struct i915_request *rq, u32 mode)
                else if (engine->class == COMPUTE_CLASS)
                        flags &= ~PIPE_CONTROL_3D_ENGINE_FLAGS;
 
-               if (!HAS_FLAT_CCS(rq->engine->i915))
+               if (gen12_needs_ccs_aux_inv(rq->engine))
                        count = 8 + 4;
                else
                        count = 8;
@@ -254,7 +266,7 @@ int gen12_emit_flush_rcs(struct i915_request *rq, u32 mode)
 
                cs = gen8_emit_pipe_control(cs, flags, LRC_PPHWSP_SCRATCH_ADDR);
 
-               if (!HAS_FLAT_CCS(rq->engine->i915)) {
+               if (gen12_needs_ccs_aux_inv(rq->engine)) {
                        /* hsdes: 1809175790 */
                        cs = gen12_emit_aux_table_inv(rq->engine->gt, cs,
                                                      GEN12_CCS_AUX_INV);
@@ -276,7 +288,7 @@ int gen12_emit_flush_xcs(struct i915_request *rq, u32 mode)
        if (mode & EMIT_INVALIDATE) {
                cmd += 2;
 
-               if (!HAS_FLAT_CCS(rq->engine->i915) &&
+               if (gen12_needs_ccs_aux_inv(rq->engine) &&
                    (rq->engine->class == VIDEO_DECODE_CLASS ||
                     rq->engine->class == VIDEO_ENHANCEMENT_CLASS)) {
                        aux_inv = rq->engine->mask &