mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-19 06:24:51 +08:00
Refactor of pipeline select programming
Adding new interface to cooperate with hw context state Simplify programming removing unnecessary functions Code optimization that stop using expensive call and instead stores configuration parameter Related-To: NEO-5019 Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
2b13f8af6d
commit
218a98f7f7
@@ -319,6 +319,7 @@ struct CommandList : _ze_command_list_handle_t {
|
||||
bool containsStatelessUncachedResource = false;
|
||||
bool performMemoryPrefetch = false;
|
||||
bool multiReturnPointCommandList = false;
|
||||
bool systolicModeSupport = false;
|
||||
};
|
||||
|
||||
using CommandListAllocatorFn = CommandList *(*)(uint32_t);
|
||||
|
||||
@@ -126,6 +126,8 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::initialize(Device *device, NEO
|
||||
if (this->multiReturnPointCommandList) {
|
||||
this->returnPoints.reserve(32);
|
||||
}
|
||||
auto &hwInfo = device->getHwInfo();
|
||||
this->systolicModeSupport = NEO::PreambleHelper<GfxFamily>::isSystolicModeConfigurable(hwInfo);
|
||||
|
||||
if (device->isImplicitScalingCapable() && !this->internalUsage && !isCopyOnly()) {
|
||||
this->partitionCount = static_cast<uint32_t>(this->device->getNEODevice()->getDeviceBitfield().count());
|
||||
@@ -138,6 +140,8 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::initialize(Device *device, NEO
|
||||
commandContainer.setReservedSshSize(getReserveSshSize());
|
||||
DeviceImp *deviceImp = static_cast<DeviceImp *>(device);
|
||||
auto returnValue = commandContainer.initialize(deviceImp->getActiveDevice(), deviceImp->allocationsForReuse.get(), !isCopyOnly());
|
||||
commandContainer.systolicModeSupport = this->systolicModeSupport;
|
||||
|
||||
ze_result_t returnType = parseErrorCode(returnValue);
|
||||
if (returnType == ZE_RESULT_SUCCESS) {
|
||||
if (!isCopyOnly()) {
|
||||
|
||||
@@ -387,7 +387,7 @@ template <GFXCORE_FAMILY gfxCoreFamily>
|
||||
void CommandQueueHw<gfxCoreFamily>::programPipelineSelectIfGpgpuDisabled(NEO::LinearStream &cmdStream) {
|
||||
bool gpgpuEnabled = this->csr->getPreambleSetFlag();
|
||||
if (!gpgpuEnabled) {
|
||||
NEO::PipelineSelectArgs args = {0, 0};
|
||||
NEO::PipelineSelectArgs args = {false, false, false, false};
|
||||
NEO::PreambleHelper<GfxFamily>::programPipelineSelect(&cmdStream, args, device->getHwInfo());
|
||||
this->csr->setPreambleSetFlag(true);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user