Skip to content

Commit 0701760

Browse files
committed
drm/i915/fbc: Moved fence related code away from intel_fbc
As a preparation for Xe move HW fence details away from intel_fbc code. Add new functions to check support for legacy fencing and fence id and use these in fbc code. Xe doesn't support legacy fencing. v2: Fix intel_gt_support_legacy_fencing macro Signed-off-by: Jouni Högander <[email protected]> Reviewed-by: Nirmoy Das <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent a6989c8 commit 0701760

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

drivers/gpu/drm/i915/display/intel_fbc.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
#include "i915_reg.h"
4848
#include "i915_utils.h"
4949
#include "i915_vgpu.h"
50+
#include "i915_vma.h"
5051
#include "intel_cdclk.h"
5152
#include "intel_de.h"
5253
#include "intel_display_trace.h"
@@ -607,7 +608,7 @@ static void ivb_fbc_activate(struct intel_fbc *fbc)
607608
else if (DISPLAY_VER(i915) == 9)
608609
skl_fbc_program_cfb_stride(fbc);
609610

610-
if (to_gt(i915)->ggtt->num_fences)
611+
if (intel_gt_support_legacy_fencing(to_gt(i915)))
611612
snb_fbc_program_fence(fbc);
612613

613614
intel_de_write(i915, ILK_DPFC_CONTROL(fbc->id),
@@ -991,11 +992,10 @@ static void intel_fbc_update_state(struct intel_atomic_state *state,
991992
fbc_state->fence_y_offset = intel_plane_fence_y_offset(plane_state);
992993

993994
drm_WARN_ON(&i915->drm, plane_state->flags & PLANE_HAS_FENCE &&
994-
!plane_state->ggtt_vma->fence);
995+
!intel_gt_support_legacy_fencing(to_gt(i915)));
995996

996-
if (plane_state->flags & PLANE_HAS_FENCE &&
997-
plane_state->ggtt_vma->fence)
998-
fbc_state->fence_id = plane_state->ggtt_vma->fence->id;
997+
if (plane_state->flags & PLANE_HAS_FENCE)
998+
fbc_state->fence_id = i915_vma_fence_id(plane_state->ggtt_vma);
999999
else
10001000
fbc_state->fence_id = -1;
10011001

@@ -1022,7 +1022,7 @@ static bool intel_fbc_is_fence_ok(const struct intel_plane_state *plane_state)
10221022
*/
10231023
return DISPLAY_VER(i915) >= 9 ||
10241024
(plane_state->flags & PLANE_HAS_FENCE &&
1025-
plane_state->ggtt_vma->fence);
1025+
i915_vma_fence_id(plane_state->ggtt_vma) != -1);
10261026
}
10271027

10281028
static bool intel_fbc_is_cfb_ok(const struct intel_plane_state *plane_state)

drivers/gpu/drm/i915/gt/intel_gt_types.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,4 +306,6 @@ enum intel_gt_scratch_field {
306306
INTEL_GT_SCRATCH_FIELD_COHERENTL3_WA = 256,
307307
};
308308

309+
#define intel_gt_support_legacy_fencing(gt) ((gt)->ggtt->num_fences > 0)
310+
309311
#endif /* __INTEL_GT_TYPES_H__ */

drivers/gpu/drm/i915/i915_vma.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,11 @@ i915_vma_unpin_fence(struct i915_vma *vma)
418418
__i915_vma_unpin_fence(vma);
419419
}
420420

421+
static inline int i915_vma_fence_id(const struct i915_vma *vma)
422+
{
423+
return vma->fence ? vma->fence->id : -1;
424+
}
425+
421426
void i915_vma_parked(struct intel_gt *gt);
422427

423428
static inline bool i915_vma_is_scanout(const struct i915_vma *vma)

0 commit comments

Comments
 (0)