Skip to content

Commit 1ab3133

Browse files
jacek-galazkasys_zuul
authored andcommitted
Add TGL_LP platform methods:
simplePushIsFasterThanGather() singleThreadBasedInstScheduling() need64BitEmulation() HDCCoalesceSLMAtomicINCWithNoReturn() HDCCoalesceAtomicCounterAccess() supportsMCSNonCompressedFix() hasHWDp4AddSupport() useOnlyEightPatchDispatchHS() supportsPrimitiveReplication() hasStartCoordinatesDeliveredWithDeltas() hasEarlyGRFRead() getMaxNumberHWThreadForEachWG() Change-Id: I702b0c968bb06b2bb1b80dedf23f13d5acbf410a
1 parent d81b140 commit 1ab3133

File tree

1 file changed

+59
-28
lines changed

1 file changed

+59
-28
lines changed

IGC/Compiler/CISACodeGen/Platform.hpp

Lines changed: 59 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -330,19 +330,65 @@ bool isDG1() const
330330
return m_platformInfo.eProductFamily == IGFX_DG1;
331331
}
332332

333-
bool supportsSIMD16TypedRW() const
333+
bool simplePushIsFasterThanGather() const
334334
{
335-
return false;
335+
return m_platformInfo.eRenderCoreFamily >= IGFX_GEN12_CORE;
336336
}
337337

338338
bool singleThreadBasedInstScheduling() const
339339
{
340-
return true;
340+
return m_platformInfo.eRenderCoreFamily < IGFX_GEN12_CORE;
341341
}
342342

343+
//all the platforms which do not support 64 bit operations and
344+
//needs int64 emulation support. Except also for BXT where
345+
//64-bit inst has much lower throughput compared to SKL.
346+
//Emulating it improves performance on some benchmarks and
347+
//won't have impact on the overall performance.
348+
bool need64BitEmulation() const {
349+
return m_platformInfo.eProductFamily == IGFX_GEMINILAKE ||
350+
m_platformInfo.eProductFamily == IGFX_BROXTON ||
351+
hasNoInt64Inst();
352+
}
353+
354+
bool HDCCoalesceSLMAtomicINCWithNoReturn() const
355+
{
356+
return m_platformInfo.eRenderCoreFamily >= IGFX_GEN12_CORE;
357+
}
343358
bool HDCCoalesceAtomicCounterAccess() const
344359
{
345-
return IGC_IS_FLAG_DISABLED(ForceSWCoalescingOfAtomicCounter);
360+
return (m_platformInfo.eRenderCoreFamily < IGFX_GEN12_CORE) && IGC_IS_FLAG_DISABLED(ForceSWCoalescingOfAtomicCounter);
361+
}
362+
363+
bool supportsMCSNonCompressedFix() const { return m_platformInfo.eRenderCoreFamily >= IGFX_GEN12_CORE; }
364+
bool hasHWDp4AddSupport() const { return m_platformInfo.eRenderCoreFamily >= IGFX_GEN12_CORE; }
365+
366+
bool useOnlyEightPatchDispatchHS() const
367+
{
368+
return (m_platformInfo.eRenderCoreFamily >= IGFX_GEN12_CORE);
369+
}
370+
371+
bool supportsPrimitiveReplication() const
372+
{
373+
return ((m_platformInfo.eRenderCoreFamily >= IGFX_GEN12_CORE) ||
374+
(m_platformInfo.eRenderCoreFamily == IGFX_GEN11_CORE && m_platformInfo.eProductFamily == IGFX_ICELAKE));
375+
}
376+
377+
// If true then screen space coordinates for upper-left vertex of a triangle
378+
// being rasterized are delivered together with source depth or W deltas.
379+
bool hasStartCoordinatesDeliveredWithDeltas() const
380+
{
381+
return m_platformInfo.eRenderCoreFamily >= IGFX_GEN12_CORE;
382+
}
383+
384+
bool hasEarlyGRFRead() const
385+
{
386+
return m_platformInfo.eProductFamily == IGFX_TIGERLAKE_LP && m_platformInfo.usRevId == REVISION_A0;
387+
}
388+
389+
bool supportsSIMD16TypedRW() const
390+
{
391+
return false;
346392
}
347393

348394
//all the platforms which DONOT support 64 bit int operations
@@ -365,18 +411,6 @@ bool hasNoFP64Inst() const {
365411
m_platformInfo.eProductFamily == IGFX_DG1;
366412
}
367413

368-
//all the platforms which do not support 64 bit operations and
369-
//needs int64 emulation support. Except also for BXT where
370-
//64-bit inst has much lower throughput compared to SKL.
371-
//Emulating it improves performance on some benchmarks and
372-
//won't have impact on the overall performance.
373-
bool need64BitEmulation() const {
374-
return (m_platformInfo.eProductFamily == IGFX_GEMINILAKE ||
375-
m_platformInfo.eProductFamily == IGFX_BROXTON ||
376-
hasNoInt64Inst());
377-
}
378-
379-
380414
//all the platforms which have correctly rounded macros (INVM, RSQRTM, MADM)
381415
bool hasCorrectlyRoundedMacros() const {
382416
return m_platformInfo.eProductFamily != IGFX_ICELAKE_LP &&
@@ -386,10 +420,6 @@ bool hasCorrectlyRoundedMacros() const {
386420
m_platformInfo.eProductFamily != IGFX_DG1;
387421
}
388422

389-
bool hasHWDp4AddSupport() const {
390-
return m_platformInfo.eProductFamily == IGFX_TIGERLAKE_LP;
391-
}
392-
bool useOnlyEightPatchDispatchHS() const { return false; }
393423
bool hasFusedEU() const { return m_platformInfo.eRenderCoreFamily >= IGFX_GEN12_CORE; }
394424
bool supports256GRFPerThread() const { return false; }
395425
bool supportMixMode() const {
@@ -416,13 +446,6 @@ uint32_t getGRFSize() const
416446
return 32;
417447
}
418448

419-
// If true then screen space coordinates for upper-left vertex of a triangle
420-
// being rasterized are delivered together with source depth or W deltas.
421-
bool hasStartCoordinatesDeliveredWithDeltas() const
422-
{
423-
return false;
424-
}
425-
426449
uint32_t maxPerThreadScratchSpace() const
427450
{
428451
return 0x200000;
@@ -445,7 +468,15 @@ bool canFuseTypedWrite() const
445468

446469
unsigned int getMaxNumberHWThreadForEachWG() const
447470
{
448-
return getMaxNumberThreadPerSubslice();
471+
if (m_platformInfo.eRenderCoreFamily < IGFX_GEN12_CORE)
472+
{
473+
//each WG is dispatched into one subslice for GEN11 and before
474+
return getMaxNumberThreadPerSubslice();
475+
}
476+
else
477+
{
478+
return getMaxNumberThreadPerSubslice() * 2;
479+
}
449480
}
450481

451482
// max block size for legacy OWord block messages

0 commit comments

Comments
 (0)