performance(ocl): add bcsEngineCount to cmdq

Related-To: NEO-8155

Signed-off-by: Dominik Dabek <dominik.dabek@intel.com>
This commit is contained in:
Dominik Dabek
2023-09-14 07:35:58 +00:00
committed by Compute-Runtime-Automation
parent fb211a921d
commit ee767822b8
13 changed files with 50 additions and 14 deletions

View File

@@ -1269,7 +1269,8 @@ WaitStatus CommandQueue::waitForAllEngines(bool blockedQueue, PrintfHandler *pri
} }
StackVec<CopyEngineState, bcsInfoMaskSize> activeBcsStates{}; StackVec<CopyEngineState, bcsInfoMaskSize> activeBcsStates{};
for (CopyEngineState &state : this->bcsStates) { for (auto currentBcsIndex = 0u; currentBcsIndex < bcsEngineCount; currentBcsIndex++) {
CopyEngineState &state = this->bcsStates[currentBcsIndex];
if (state.isValid()) { if (state.isValid()) {
activeBcsStates.push_back(state); activeBcsStates.push_back(state);
} }
@@ -1315,7 +1316,7 @@ void CommandQueue::setupBarrierTimestampForBcsEngines(aub_stream::EngineType eng
if (isOOQEnabled()) { if (isOOQEnabled()) {
// Barrier node will be signalled on gpgpuCsr. Save it for later use on blitters. // Barrier node will be signalled on gpgpuCsr. Save it for later use on blitters.
for (auto currentBcsIndex = 0u; currentBcsIndex < bcsTimestampPacketContainers.size(); currentBcsIndex++) { for (auto currentBcsIndex = 0u; currentBcsIndex < bcsEngineCount; currentBcsIndex++) {
const auto currentBcsEngineType = EngineHelpers::mapBcsIndexToEngineType(currentBcsIndex, true); const auto currentBcsEngineType = EngineHelpers::mapBcsIndexToEngineType(currentBcsIndex, true);
if (currentBcsEngineType == engineType) { if (currentBcsEngineType == engineType) {
// Node is already added to barrierNodes for this engine, no need to save it. // Node is already added to barrierNodes for this engine, no need to save it.
@@ -1351,7 +1352,8 @@ void CommandQueue::setLastBcsPacket(aub_stream::EngineType bcsEngineType) {
} }
void CommandQueue::fillCsrDependenciesWithLastBcsPackets(CsrDependencies &csrDeps) { void CommandQueue::fillCsrDependenciesWithLastBcsPackets(CsrDependencies &csrDeps) {
for (BcsTimestampPacketContainers &bcsContainers : bcsTimestampPacketContainers) { for (auto currentBcsIndex = 0u; currentBcsIndex < bcsEngineCount; currentBcsIndex++) {
BcsTimestampPacketContainers &bcsContainers = bcsTimestampPacketContainers[currentBcsIndex];
if (bcsContainers.lastSignalledPacket.peekNodes().empty()) { if (bcsContainers.lastSignalledPacket.peekNodes().empty()) {
continue; continue;
} }
@@ -1360,7 +1362,8 @@ void CommandQueue::fillCsrDependenciesWithLastBcsPackets(CsrDependencies &csrDep
} }
void CommandQueue::clearLastBcsPackets() { void CommandQueue::clearLastBcsPackets() {
for (BcsTimestampPacketContainers &bcsContainers : bcsTimestampPacketContainers) { for (auto currentBcsIndex = 0u; currentBcsIndex < bcsEngineCount; currentBcsIndex++) {
BcsTimestampPacketContainers &bcsContainers = bcsTimestampPacketContainers[currentBcsIndex];
bcsContainers.lastSignalledPacket.moveNodesToNewContainer(*deferredTimestampPackets); bcsContainers.lastSignalledPacket.moveNodesToNewContainer(*deferredTimestampPackets);
} }
} }

View File

@@ -426,6 +426,7 @@ class CommandQueue : public BaseObject<_cl_command_queue> {
mutable EngineControl *gpgpuEngine = nullptr; mutable EngineControl *gpgpuEngine = nullptr;
std::array<EngineControl *, bcsInfoMaskSize> bcsEngines = {}; std::array<EngineControl *, bcsInfoMaskSize> bcsEngines = {};
std::optional<aub_stream::EngineType> bcsQueueEngineType{}; std::optional<aub_stream::EngineType> bcsQueueEngineType{};
size_t bcsEngineCount = bcsInfoMaskSize;
cl_command_queue_properties commandQueueProperties = 0; cl_command_queue_properties commandQueueProperties = 0;
std::vector<uint64_t> propertiesVector; std::vector<uint64_t> propertiesVector;

View File

@@ -93,6 +93,8 @@ class CommandQueueHw : public CommandQueue {
engine->commandStreamReceiver->initDirectSubmission(); engine->commandStreamReceiver->initDirectSubmission();
} }
} }
bcsEngineCount = GfxFamily::bcsEngineCount;
} }
static CommandQueue *create(Context *context, static CommandQueue *create(Context *context,

View File

@@ -10,6 +10,7 @@
#include "opencl/source/context/context.h" #include "opencl/source/context/context.h"
#include "opencl/test/unit_test/mocks/mock_cl_device.h" #include "opencl/test/unit_test/mocks/mock_cl_device.h"
#include "opencl/test/unit_test/mocks/mock_command_queue.h"
#include "cl_api_tests.h" #include "cl_api_tests.h"
@@ -19,7 +20,7 @@ using ClCreateCommandQueueTest = ApiTests;
namespace ULT { namespace ULT {
TEST_F(ClCreateCommandQueueTest, GivenCorrectParametersWhenCreatingCommandQueueThenCommandQueueIsCreatedAndSuccessIsReturned) { TEST_F(ClCreateCommandQueueTest, givenCorrectParametersWhenCreatingCommandQueueThenCommandQueueIsCreatedAndSuccessIsReturned) {
cl_command_queue cmdQ = nullptr; cl_command_queue cmdQ = nullptr;
cl_queue_properties properties = 0; cl_queue_properties properties = 0;
@@ -32,24 +33,24 @@ TEST_F(ClCreateCommandQueueTest, GivenCorrectParametersWhenCreatingCommandQueueT
EXPECT_EQ(CL_SUCCESS, retVal); EXPECT_EQ(CL_SUCCESS, retVal);
} }
TEST_F(ClCreateCommandQueueTest, GivenNullContextWhenCreatingCommandQueueThenInvalidContextErrorIsReturned) { TEST_F(ClCreateCommandQueueTest, givenNullContextWhenCreatingCommandQueueThenInvalidContextErrorIsReturned) {
clCreateCommandQueue(nullptr, testedClDevice, 0, &retVal); clCreateCommandQueue(nullptr, testedClDevice, 0, &retVal);
EXPECT_EQ(CL_INVALID_CONTEXT, retVal); EXPECT_EQ(CL_INVALID_CONTEXT, retVal);
} }
TEST_F(ClCreateCommandQueueTest, GivenNullDeviceWhenCreatingCommandQueueThenInvalidDeviceErrorIsReturned) { TEST_F(ClCreateCommandQueueTest, givenNullDeviceWhenCreatingCommandQueueThenInvalidDeviceErrorIsReturned) {
clCreateCommandQueue(pContext, nullptr, 0, &retVal); clCreateCommandQueue(pContext, nullptr, 0, &retVal);
EXPECT_EQ(CL_INVALID_DEVICE, retVal); EXPECT_EQ(CL_INVALID_DEVICE, retVal);
} }
TEST_F(ClCreateCommandQueueTest, GivenDeviceNotAssociatedWithContextWhenCreatingCommandQueueThenInvalidDeviceErrorIsReturned) { TEST_F(ClCreateCommandQueueTest, givenDeviceNotAssociatedWithContextWhenCreatingCommandQueueThenInvalidDeviceErrorIsReturned) {
UltClDeviceFactory deviceFactory{1, 0}; UltClDeviceFactory deviceFactory{1, 0};
EXPECT_FALSE(pContext->isDeviceAssociated(*deviceFactory.rootDevices[0])); EXPECT_FALSE(pContext->isDeviceAssociated(*deviceFactory.rootDevices[0]));
clCreateCommandQueue(pContext, deviceFactory.rootDevices[0], 0, &retVal); clCreateCommandQueue(pContext, deviceFactory.rootDevices[0], 0, &retVal);
EXPECT_EQ(CL_INVALID_DEVICE, retVal); EXPECT_EQ(CL_INVALID_DEVICE, retVal);
} }
TEST_F(ClCreateCommandQueueTest, GivenInvalidPropertiesWhenCreatingCommandQueueThenInvalidValueErrorIsReturned) { TEST_F(ClCreateCommandQueueTest, givenInvalidPropertiesWhenCreatingCommandQueueThenInvalidValueErrorIsReturned) {
cl_command_queue cmdQ = nullptr; cl_command_queue cmdQ = nullptr;
cl_queue_properties properties = 0xf0000; cl_queue_properties properties = 0xf0000;
@@ -59,7 +60,7 @@ TEST_F(ClCreateCommandQueueTest, GivenInvalidPropertiesWhenCreatingCommandQueueT
ASSERT_EQ(CL_INVALID_VALUE, retVal); ASSERT_EQ(CL_INVALID_VALUE, retVal);
} }
TEST_F(ClCreateCommandQueueTest, GivenOoqParametersWhenQueueIsCreatedThenQueueIsSucesfullyCreated) { TEST_F(ClCreateCommandQueueTest, givenOoqParametersWhenQueueIsCreatedThenQueueIsSucesfullyCreated) {
cl_int retVal = CL_SUCCESS; cl_int retVal = CL_SUCCESS;
cl_queue_properties ooq = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE; cl_queue_properties ooq = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE;
auto cmdq = clCreateCommandQueue(pContext, testedClDevice, ooq, &retVal); auto cmdq = clCreateCommandQueue(pContext, testedClDevice, ooq, &retVal);
@@ -68,7 +69,7 @@ TEST_F(ClCreateCommandQueueTest, GivenOoqParametersWhenQueueIsCreatedThenQueueIs
retVal = clReleaseCommandQueue(cmdq); retVal = clReleaseCommandQueue(cmdq);
} }
HWTEST_F(ClCreateCommandQueueTest, GivenOoqParametersWhenQueueIsCreatedThenCommandStreamReceiverSwitchesToBatchingMode) { HWTEST_F(ClCreateCommandQueueTest, givenOoqParametersWhenQueueIsCreatedThenCommandStreamReceiverSwitchesToBatchingMode) {
using BaseType = typename CommandQueue::BaseType; using BaseType = typename CommandQueue::BaseType;
cl_int retVal = CL_SUCCESS; cl_int retVal = CL_SUCCESS;
cl_queue_properties ooq = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE; cl_queue_properties ooq = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE;
@@ -83,7 +84,7 @@ HWTEST_F(ClCreateCommandQueueTest, GivenOoqParametersWhenQueueIsCreatedThenComma
retVal = clReleaseCommandQueue(cmdq); retVal = clReleaseCommandQueue(cmdq);
} }
HWTEST_F(ClCreateCommandQueueTest, GivenOoqParametersWhenQueueIsCreatedAndUpdateTaskCountFromWaitEnabledThenCommandStreamReceiverDoesntSwitchToBatchingMode) { HWTEST_F(ClCreateCommandQueueTest, givenOoqParametersWhenQueueIsCreatedAndUpdateTaskCountFromWaitEnabledThenCommandStreamReceiverDoesntSwitchToBatchingMode) {
DebugManagerStateRestore restorer; DebugManagerStateRestore restorer;
DebugManager.flags.UpdateTaskCountFromWait.set(3); DebugManager.flags.UpdateTaskCountFromWait.set(3);
@@ -101,7 +102,7 @@ HWTEST_F(ClCreateCommandQueueTest, GivenOoqParametersWhenQueueIsCreatedAndUpdate
retVal = clReleaseCommandQueue(cmdq); retVal = clReleaseCommandQueue(cmdq);
} }
HWTEST_F(ClCreateCommandQueueTest, GivenForcedDispatchModeAndOoqParametersWhenQueueIsCreatedThenCommandStreamReceiverDoesntSwitchToBatchingMode) { HWTEST_F(ClCreateCommandQueueTest, givenForcedDispatchModeAndOoqParametersWhenQueueIsCreatedThenCommandStreamReceiverDoesntSwitchToBatchingMode) {
DebugManagerStateRestore restorer; DebugManagerStateRestore restorer;
DebugManager.flags.CsrDispatchMode.set(static_cast<int32_t>(DispatchMode::ImmediateDispatch)); DebugManager.flags.CsrDispatchMode.set(static_cast<int32_t>(DispatchMode::ImmediateDispatch));
@@ -117,7 +118,7 @@ HWTEST_F(ClCreateCommandQueueTest, GivenForcedDispatchModeAndOoqParametersWhenQu
retVal = clReleaseCommandQueue(cmdq); retVal = clReleaseCommandQueue(cmdq);
} }
HWTEST_F(ClCreateCommandQueueTest, GivenOoqParametersWhenQueueIsCreatedThenCommandStreamReceiverSwitchesToNTo1SubmissionModel) { HWTEST_F(ClCreateCommandQueueTest, givenOoqParametersWhenQueueIsCreatedThenCommandStreamReceiverSwitchesToNTo1SubmissionModel) {
using BaseType = typename CommandQueue::BaseType; using BaseType = typename CommandQueue::BaseType;
cl_int retVal = CL_SUCCESS; cl_int retVal = CL_SUCCESS;
cl_queue_properties ooq = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE; cl_queue_properties ooq = CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE;
@@ -132,4 +133,18 @@ HWTEST_F(ClCreateCommandQueueTest, GivenOoqParametersWhenQueueIsCreatedThenComma
retVal = clReleaseCommandQueue(cmdq); retVal = clReleaseCommandQueue(cmdq);
} }
HWTEST_F(ClCreateCommandQueueTest, givenGfxFamilyWhenQueueIsCreatedThenBcsEngineCountSetToValueFromGfxFamily) {
using BaseType = typename CommandQueue::BaseType;
cl_int retVal = CL_SUCCESS;
cl_queue_properties properties{};
auto cmdq = clCreateCommandQueue(pContext, testedClDevice, properties, &retVal);
auto queue = castToObject<CommandQueue>(static_cast<BaseType *>(cmdq));
auto mockQueue = static_cast<MockCommandQueue *>(queue);
EXPECT_EQ(FamilyType::bcsEngineCount, mockQueue->bcsEngineCount);
retVal = clReleaseCommandQueue(cmdq);
}
} // namespace ULT } // namespace ULT

View File

@@ -650,6 +650,7 @@ HWTEST_F(OoqCommandQueueHwBlitTest, givenSplitBcsCopyWhenEnqueueReadWithRequeste
auto cmdQHw = static_cast<MockCommandQueueHw<FamilyType> *>(this->pCmdQ); auto cmdQHw = static_cast<MockCommandQueueHw<FamilyType> *>(this->pCmdQ);
cmdQHw->setStallingCommandsOnNextFlush(true); cmdQHw->setStallingCommandsOnNextFlush(true);
cmdQHw->splitBarrierRequired = true; cmdQHw->splitBarrierRequired = true;
cmdQHw->bcsEngineCount = bcsInfoMaskSize;
std::unique_ptr<OsContext> osContext1(OsContext::create(pDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->osInterface.get(), pDevice->getRootDeviceIndex(), 0, std::unique_ptr<OsContext> osContext1(OsContext::create(pDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->osInterface.get(), pDevice->getRootDeviceIndex(), 0,
EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_BCS1, EngineUsage::Regular}, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_BCS1, EngineUsage::Regular},
@@ -700,6 +701,7 @@ HWTEST_F(OoqCommandQueueHwBlitTest, givenSplitBcsCopyWhenEnqueueBarrierNonSplitC
auto memoryManager = static_cast<MockMemoryManager *>(pDevice->getMemoryManager()); auto memoryManager = static_cast<MockMemoryManager *>(pDevice->getMemoryManager());
memoryManager->returnFakeAllocation = true; memoryManager->returnFakeAllocation = true;
auto cmdQHw = static_cast<MockCommandQueueHw<FamilyType> *>(this->pCmdQ); auto cmdQHw = static_cast<MockCommandQueueHw<FamilyType> *>(this->pCmdQ);
cmdQHw->bcsEngineCount = bcsInfoMaskSize;
cmdQHw->setStallingCommandsOnNextFlush(true); cmdQHw->setStallingCommandsOnNextFlush(true);
cmdQHw->splitBarrierRequired = true; cmdQHw->splitBarrierRequired = true;
@@ -763,6 +765,7 @@ HWTEST_F(OoqCommandQueueHwBlitTest, givenSplitBcsCopyWhenEnqueueReadThenDoNotEnq
auto memoryManager = static_cast<MockMemoryManager *>(pDevice->getMemoryManager()); auto memoryManager = static_cast<MockMemoryManager *>(pDevice->getMemoryManager());
memoryManager->returnFakeAllocation = true; memoryManager->returnFakeAllocation = true;
auto cmdQHw = static_cast<MockCommandQueueHw<FamilyType> *>(this->pCmdQ); auto cmdQHw = static_cast<MockCommandQueueHw<FamilyType> *>(this->pCmdQ);
cmdQHw->bcsEngineCount = bcsInfoMaskSize;
std::unique_ptr<OsContext> osContext1(OsContext::create(pDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->osInterface.get(), pDevice->getRootDeviceIndex(), 0, std::unique_ptr<OsContext> osContext1(OsContext::create(pDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->osInterface.get(), pDevice->getRootDeviceIndex(), 0,
EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_BCS1, EngineUsage::Regular}, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_BCS1, EngineUsage::Regular},
@@ -816,6 +819,7 @@ HWTEST_F(IoqCommandQueueHwBlitTest, givenSplitBcsCopyWhenEnqueueReadWithRequeste
auto cmdQHw = static_cast<MockCommandQueueHw<FamilyType> *>(this->pCmdQ); auto cmdQHw = static_cast<MockCommandQueueHw<FamilyType> *>(this->pCmdQ);
cmdQHw->setStallingCommandsOnNextFlush(true); cmdQHw->setStallingCommandsOnNextFlush(true);
cmdQHw->splitBarrierRequired = true; cmdQHw->splitBarrierRequired = true;
cmdQHw->bcsEngineCount = bcsInfoMaskSize;
std::unique_ptr<OsContext> osContext1(OsContext::create(pDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->osInterface.get(), pDevice->getRootDeviceIndex(), 0, std::unique_ptr<OsContext> osContext1(OsContext::create(pDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->osInterface.get(), pDevice->getRootDeviceIndex(), 0,
EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_BCS1, EngineUsage::Regular}, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_BCS1, EngineUsage::Regular},
@@ -869,6 +873,7 @@ HWTEST_F(OoqCommandQueueHwBlitTest, givenSplitBcsCopyWhenEnqueueReadWithNoReques
auto cmdQHw = static_cast<MockCommandQueueHw<FamilyType> *>(this->pCmdQ); auto cmdQHw = static_cast<MockCommandQueueHw<FamilyType> *>(this->pCmdQ);
cmdQHw->setStallingCommandsOnNextFlush(false); cmdQHw->setStallingCommandsOnNextFlush(false);
cmdQHw->splitBarrierRequired = true; cmdQHw->splitBarrierRequired = true;
cmdQHw->bcsEngineCount = bcsInfoMaskSize;
std::unique_ptr<OsContext> osContext1(OsContext::create(pDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->osInterface.get(), pDevice->getRootDeviceIndex(), 0, std::unique_ptr<OsContext> osContext1(OsContext::create(pDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->osInterface.get(), pDevice->getRootDeviceIndex(), 0,
EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_BCS1, EngineUsage::Regular}, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_BCS1, EngineUsage::Regular},
@@ -920,6 +925,7 @@ HWTEST_F(IoqCommandQueueHwBlitTest, givenSplitBcsCopyWhenEnqueueBlockingReadThen
auto memoryManager = static_cast<MockMemoryManager *>(pDevice->getMemoryManager()); auto memoryManager = static_cast<MockMemoryManager *>(pDevice->getMemoryManager());
memoryManager->returnFakeAllocation = true; memoryManager->returnFakeAllocation = true;
auto cmdQHw = static_cast<MockCommandQueueHw<FamilyType> *>(this->pCmdQ); auto cmdQHw = static_cast<MockCommandQueueHw<FamilyType> *>(this->pCmdQ);
cmdQHw->bcsEngineCount = bcsInfoMaskSize;
std::unique_ptr<OsContext> osContext1(OsContext::create(pDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->osInterface.get(), pDevice->getRootDeviceIndex(), 0, std::unique_ptr<OsContext> osContext1(OsContext::create(pDevice->getExecutionEnvironment()->rootDeviceEnvironments[0]->osInterface.get(), pDevice->getRootDeviceIndex(), 0,
EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_BCS1, EngineUsage::Regular}, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_BCS1, EngineUsage::Regular},

View File

@@ -22,6 +22,7 @@
namespace NEO { namespace NEO {
class MockCommandQueue : public CommandQueue { class MockCommandQueue : public CommandQueue {
public: public:
using CommandQueue::bcsEngineCount;
using CommandQueue::bcsEngines; using CommandQueue::bcsEngines;
using CommandQueue::bcsInitialized; using CommandQueue::bcsInitialized;
using CommandQueue::bcsQueueEngineType; using CommandQueue::bcsQueueEngineType;
@@ -253,6 +254,7 @@ class MockCommandQueueHw : public CommandQueueHw<GfxFamily> {
using BaseClass = CommandQueueHw<GfxFamily>; using BaseClass = CommandQueueHw<GfxFamily>;
public: public:
using BaseClass::bcsEngineCount;
using BaseClass::bcsEngines; using BaseClass::bcsEngines;
using BaseClass::bcsQueueEngineType; using BaseClass::bcsQueueEngineType;
using BaseClass::bcsStates; using BaseClass::bcsStates;

View File

@@ -27,6 +27,7 @@ struct Gen11 {
static constexpr bool isUsingMiMemFence = false; static constexpr bool isUsingMiMemFence = false;
static constexpr bool isUsingMiSetPredicate = false; static constexpr bool isUsingMiSetPredicate = false;
static constexpr bool isUsingMiMathMocs = false; static constexpr bool isUsingMiMathMocs = false;
static constexpr uint32_t bcsEngineCount = 1u;
struct FrontEndStateSupport { struct FrontEndStateSupport {
static constexpr bool scratchSize = true; static constexpr bool scratchSize = true;

View File

@@ -26,6 +26,7 @@ struct Gen12Lp {
static constexpr bool isUsingMiMemFence = false; static constexpr bool isUsingMiMemFence = false;
static constexpr bool isUsingMiSetPredicate = false; static constexpr bool isUsingMiSetPredicate = false;
static constexpr bool isUsingMiMathMocs = false; static constexpr bool isUsingMiMathMocs = false;
static constexpr uint32_t bcsEngineCount = 1u;
struct FrontEndStateSupport { struct FrontEndStateSupport {
static constexpr bool scratchSize = true; static constexpr bool scratchSize = true;

View File

@@ -28,6 +28,7 @@ struct Gen8 {
static constexpr bool isUsingMiMemFence = false; static constexpr bool isUsingMiMemFence = false;
static constexpr bool isUsingMiSetPredicate = false; static constexpr bool isUsingMiSetPredicate = false;
static constexpr bool isUsingMiMathMocs = false; static constexpr bool isUsingMiMathMocs = false;
static constexpr uint32_t bcsEngineCount = 1u;
struct FrontEndStateSupport { struct FrontEndStateSupport {
static constexpr bool scratchSize = true; static constexpr bool scratchSize = true;

View File

@@ -27,6 +27,7 @@ struct Gen9 {
static constexpr bool isUsingMiMemFence = false; static constexpr bool isUsingMiMemFence = false;
static constexpr bool isUsingMiSetPredicate = false; static constexpr bool isUsingMiSetPredicate = false;
static constexpr bool isUsingMiMathMocs = false; static constexpr bool isUsingMiMathMocs = false;
static constexpr uint32_t bcsEngineCount = 1u;
struct FrontEndStateSupport { struct FrontEndStateSupport {
static constexpr bool scratchSize = true; static constexpr bool scratchSize = true;

View File

@@ -24,6 +24,7 @@ struct XeHpCore {
static constexpr uint32_t stateComputeModeLargeGrfModeMask = (1u << 15); static constexpr uint32_t stateComputeModeLargeGrfModeMask = (1u << 15);
static constexpr uint32_t stateComputeModeForceDisableSupportMultiGpuPartialWrites = (1u << 2); static constexpr uint32_t stateComputeModeForceDisableSupportMultiGpuPartialWrites = (1u << 2);
static constexpr uint32_t stateComputeModeForceDisableSupportMultiGpuAtomics = (1u << 1); static constexpr uint32_t stateComputeModeForceDisableSupportMultiGpuAtomics = (1u << 1);
static constexpr uint32_t bcsEngineCount = 1u;
static constexpr bool isUsingL3Control = true; static constexpr bool isUsingL3Control = true;
static constexpr bool isUsingMediaSamplerDopClockGate = true; static constexpr bool isUsingMediaSamplerDopClockGate = true;

View File

@@ -26,6 +26,7 @@ struct XeHpcCore {
static constexpr uint32_t stateComputeModeForceNonCoherentMask = (0b11u << 3); static constexpr uint32_t stateComputeModeForceNonCoherentMask = (0b11u << 3);
static constexpr uint32_t stateComputeModeEuThreadSchedulingModeOverrideMask = (0b11u << 13); static constexpr uint32_t stateComputeModeEuThreadSchedulingModeOverrideMask = (0b11u << 13);
static constexpr uint32_t stateComputeModeLargeGrfModeMask = (1u << 15); static constexpr uint32_t stateComputeModeLargeGrfModeMask = (1u << 15);
static constexpr uint32_t bcsEngineCount = 9u;
static constexpr bool isUsingL3Control = false; static constexpr bool isUsingL3Control = false;
static constexpr bool isUsingMediaSamplerDopClockGate = false; static constexpr bool isUsingMediaSamplerDopClockGate = false;

View File

@@ -26,6 +26,7 @@ struct XeHpgCore {
static constexpr uint32_t stateComputeModeForceNonCoherentMask = (0b11u << 3); static constexpr uint32_t stateComputeModeForceNonCoherentMask = (0b11u << 3);
static constexpr uint32_t stateComputeModePixelAsyncComputeThreadLimitMask = (0b111u << 7); static constexpr uint32_t stateComputeModePixelAsyncComputeThreadLimitMask = (0b111u << 7);
static constexpr uint32_t stateComputeModeLargeGrfModeMask = (1u << 15); static constexpr uint32_t stateComputeModeLargeGrfModeMask = (1u << 15);
static constexpr uint32_t bcsEngineCount = 1u;
static constexpr bool isUsingL3Control = true; static constexpr bool isUsingL3Control = true;
static constexpr bool isUsingMediaSamplerDopClockGate = false; static constexpr bool isUsingMediaSamplerDopClockGate = false;