drm/xe/rtp: Add match helper for gslice fused off
Add match helper to detect when the first gslice is fused off, as needed by future workarounds. v2: - Add warning if called on a platform without geometry pipeline (Matt Roper) - Hardcode 4 as the number of gslices, which matches all the currently supported platforms. PVC doesn't have geometry pipeline and shouldn't use this function (Matt Roper) Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Link: https://lore.kernel.org/r/20230314003012.2600353-2-lucas.demarchi@intel.com Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
parent
69db25e447
commit
143800547b
@ -8,6 +8,7 @@
|
||||
#include <drm/xe_drm.h>
|
||||
|
||||
#include "xe_gt.h"
|
||||
#include "xe_gt_topology.h"
|
||||
#include "xe_macros.h"
|
||||
#include "xe_reg_sr.h"
|
||||
|
||||
@ -170,3 +171,18 @@ bool xe_rtp_match_first_render_or_compute(const struct xe_gt *gt,
|
||||
return render_compute_mask &&
|
||||
hwe->engine_id == __ffs(render_compute_mask);
|
||||
}
|
||||
|
||||
bool xe_rtp_match_first_gslice_fused_off(const struct xe_gt *gt,
|
||||
const struct xe_hw_engine *hwe)
|
||||
{
|
||||
unsigned int dss_per_gslice = 4;
|
||||
unsigned int dss;
|
||||
|
||||
if (drm_WARN(>_to_xe(gt)->drm, !gt->fuse_topo.g_dss_mask,
|
||||
"Checking gslice for platform without geometry pipeline\n"))
|
||||
return false;
|
||||
|
||||
dss = xe_dss_mask_group_ffs(gt->fuse_topo.g_dss_mask, 0, 0);
|
||||
|
||||
return dss >= dss_per_gslice;
|
||||
}
|
||||
|
@ -427,4 +427,15 @@ bool xe_rtp_match_even_instance(const struct xe_gt *gt,
|
||||
bool xe_rtp_match_first_render_or_compute(const struct xe_gt *gt,
|
||||
const struct xe_hw_engine *hwe);
|
||||
|
||||
/*
|
||||
* xe_rtp_match_first_gslice_fused_off - Match when first gslice is fused off
|
||||
*
|
||||
* @gt: GT structure
|
||||
* @hwe: Engine instance
|
||||
*
|
||||
* Returns: true if first gslice is fused off, false otherwise.
|
||||
*/
|
||||
bool xe_rtp_match_first_gslice_fused_off(const struct xe_gt *gt,
|
||||
const struct xe_hw_engine *hwe);
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user