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);
        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;
                                                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);