[Intel-xe] [PATCH v2] drm/xe: Replace PVC check by engine type check
Matt Roper
matthew.d.roper at intel.com
Thu Jun 1 15:28:13 UTC 2023
On Thu, Jun 01, 2023 at 08:23:27AM -0700, Souza, Jose wrote:
> On Thu, 2023-06-01 at 08:08 -0700, Matt Roper wrote:
> > On Mon, May 29, 2023 at 12:56:07PM -0700, José Roberto de Souza wrote:
> > > __emit_job_gen12_render_compute() masks some PIPE_CONTROL bits that
> > > do not exist in platforms without render engine.
> > > So here replacing the PVC check by something more generic that will
> > > support any future platforms without render engine.
> > >
> > > Reviewed-by: Thomas Hellström <thomas.hellstrom at linux.intel.com>
> > > Signed-off-by: José Roberto de Souza <jose.souza at intel.com>
> > > ---
> > > drivers/gpu/drm/xe/xe_ring_ops.c | 6 +++---
> > > 1 file changed, 3 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/xe/xe_ring_ops.c b/drivers/gpu/drm/xe/xe_ring_ops.c
> > > index d2fa0b4c8bcc0..b79dafbe7c4f8 100644
> > > --- a/drivers/gpu/drm/xe/xe_ring_ops.c
> > > +++ b/drivers/gpu/drm/xe/xe_ring_ops.c
> > > @@ -249,11 +249,11 @@ static void __emit_job_gen12_render_compute(struct xe_sched_job *job,
> > > u32 ppgtt_flag = get_ppgtt_flag(job);
> > > struct xe_gt *gt = job->engine->gt;
> > > struct xe_device *xe = gt_to_xe(gt);
> > > - bool pvc = xe->info.platform == XE_PVC;
> > > + bool lacks_render = !(xe->gt[0].info.engine_mask & XE_HW_ENGINE_RCS_MASK);
> >
> > Is there a specific need to check xe->gt[0] rather than the gt pointer
> > we already have? This function will only get called on a primary GT
> > (since media GTs don't have render/compute engines), so it seems like
> > checking the current tile's primary would have been fine?
>
> Huum! Yeah for all current platforms it would be fine checking against gt or xe->gt[0].
> But I have already pushed it...
No worries; I need to solve a rebase conflict here on my gt vs tile
series, so I just wanted to make sure that it was safe for me to resolve
it this way and I wasn't overlooking something important.
Thanks!
Matt
>
> >
> >
> > Matt
> >
> > > u32 mask_flags = 0;
> > >
> > > dw[i++] = preparser_disable(true);
> > > - if (pvc)
> > > + if (lacks_render)
> > > mask_flags = PIPE_CONTROL_3D_ARCH_FLAGS;
> > > else if (job->engine->class == XE_ENGINE_CLASS_COMPUTE)
> > > mask_flags = PIPE_CONTROL_3D_ENGINE_FLAGS;
> > > @@ -275,7 +275,7 @@ static void __emit_job_gen12_render_compute(struct xe_sched_job *job,
> > > job->user_fence.value,
> > > dw, i);
> > >
> > > - i = emit_pipe_imm_ggtt(xe_lrc_seqno_ggtt_addr(lrc), seqno, pvc, dw, i);
> > > + i = emit_pipe_imm_ggtt(xe_lrc_seqno_ggtt_addr(lrc), seqno, lacks_render, dw, i);
> > >
> > > i = emit_user_interrupt(dw, i);
> > >
> > > --
> > > 2.40.1
> > >
> >
>
--
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation
More information about the Intel-xe
mailing list