On windows always request even number of EUs.

Resolves: NEO-3787

Change-Id: I45e8fdca563b3e6bebcd94b9c16202aff61a2357
Signed-off-by: Piotr Zdunowski <piotr.zdunowski@intel.com>
This commit is contained in:
Piotr Zdunowski
2020-03-23 13:26:56 +01:00
committed by sys_ocldev
parent 6f09eef35f
commit 68ec2d9cf7
5 changed files with 34 additions and 5 deletions

View File

@@ -67,7 +67,7 @@ bool WddmDirectSubmission<GfxFamily>::submit(uint64_t gpuAddress, size_t size) {
pHeader->RequiresCoherency = false;
pHeader->UmdRequestedSliceState = 0;
pHeader->UmdRequestedEUCount = wddm->getGtSysInfo()->EUCount / wddm->getGtSysInfo()->SubSliceCount;
pHeader->UmdRequestedEUCount = wddm->getRequestedEUCount();
pHeader->UmdRequestedSubsliceCount = 0;
pHeader->NeedsMidBatchPreEmptionSupport = true;

View File

@@ -1023,6 +1023,12 @@ WddmVersion Wddm::getWddmVersion() {
}
}
uint32_t Wddm::getRequestedEUCount() const {
DEBUG_BREAK_IF(!gtSystemInfo);
// Always request even number od EUs
return (gtSystemInfo.get()->EUCount / gtSystemInfo.get()->SubSliceCount) & (~1u);
};
void Wddm::createPagingFenceLogger() {
if (DebugManager.flags.WddmResidencyLogger.get()) {
residencyLogger = std::make_unique<WddmResidencyLogger>(device, pagingFenceAddress);

View File

@@ -149,6 +149,8 @@ class Wddm {
WddmVersion getWddmVersion();
static CreateDXGIFactoryFcn createDxgiFactory;
uint32_t getRequestedEUCount() const;
protected:
std::unique_ptr<HwDeviceId> hwDeviceId;
D3DKMT_HANDLE device = 0;