fix: set stackSizePerRay appropriately for release
Related-to: NEO-12816 Signed-off-by: Andrzej Koska <andrzej.koska@intel.com>
This commit is contained in:
parent
5ae2552b4b
commit
dad53a13c3
|
@ -29,6 +29,7 @@
|
|||
#include "shared/source/os_interface/os_interface.h"
|
||||
#include "shared/source/os_interface/os_time.h"
|
||||
#include "shared/source/program/sync_buffer_handler.h"
|
||||
#include "shared/source/release_helper/release_helper.h"
|
||||
#include "shared/source/utilities/software_tags_manager.h"
|
||||
|
||||
namespace NEO {
|
||||
|
@ -1223,7 +1224,8 @@ void Device::allocateRTDispatchGlobals(uint32_t maxBvhLevels) {
|
|||
|
||||
dispatchGlobals.rtMemBasePtr = rtStackAllocation->getGpuAddress() + rtStackSize;
|
||||
dispatchGlobals.callStackHandlerKSP = reinterpret_cast<uint64_t>(nullptr);
|
||||
dispatchGlobals.stackSizePerRay = 0;
|
||||
auto releaseHelper = getReleaseHelper();
|
||||
dispatchGlobals.stackSizePerRay = releaseHelper ? releaseHelper->getStackSizePerRay() : 0;
|
||||
dispatchGlobals.numDSSRTStacks = RayTracingHelper::stackDssMultiplier;
|
||||
dispatchGlobals.maxBVHLevels = maxBvhLevels;
|
||||
|
||||
|
|
|
@ -61,6 +61,7 @@ class ReleaseHelper {
|
|||
virtual uint64_t getL3CacheBankSizeInKb() const = 0;
|
||||
virtual uint32_t getAdditionalFp16Caps() const = 0;
|
||||
virtual uint32_t getAdditionalExtraCaps() const = 0;
|
||||
virtual uint32_t getStackSizePerRay() const = 0;
|
||||
virtual bool isLocalOnlyAllowed() const = 0;
|
||||
virtual bool isDisablingMsaaRequired() const = 0;
|
||||
virtual const SizeToPreferredSlmValueArray &getSizeToPreferredSlmValue(bool isHeapless) const = 0;
|
||||
|
@ -104,6 +105,7 @@ class ReleaseHelperHw : public ReleaseHelper {
|
|||
uint64_t getL3CacheBankSizeInKb() const override;
|
||||
uint32_t getAdditionalFp16Caps() const override;
|
||||
uint32_t getAdditionalExtraCaps() const override;
|
||||
uint32_t getStackSizePerRay() const override;
|
||||
bool isLocalOnlyAllowed() const override;
|
||||
bool isDisablingMsaaRequired() const override;
|
||||
const SizeToPreferredSlmValueArray &getSizeToPreferredSlmValue(bool isHeapless) const override;
|
||||
|
|
|
@ -152,6 +152,11 @@ uint32_t ReleaseHelperHw<releaseType>::getAdditionalExtraCaps() const {
|
|||
return 0u;
|
||||
}
|
||||
|
||||
template <ReleaseType releaseType>
|
||||
uint32_t ReleaseHelperHw<releaseType>::getStackSizePerRay() const {
|
||||
return 0u;
|
||||
}
|
||||
|
||||
template <ReleaseType releaseType>
|
||||
bool ReleaseHelperHw<releaseType>::isLocalOnlyAllowed() const {
|
||||
return true;
|
||||
|
|
|
@ -72,6 +72,7 @@ class MockDevice : public RootDevice {
|
|||
using Device::preemptionMode;
|
||||
using Device::regularEngineGroups;
|
||||
using Device::rootCsrCreated;
|
||||
using Device::rtDispatchGlobalsInfos;
|
||||
using Device::rtMemoryBackedBuffer;
|
||||
using Device::secondaryCsrs;
|
||||
using Device::secondaryEngines;
|
||||
|
|
|
@ -41,6 +41,7 @@ class MockReleaseHelper : public ReleaseHelper {
|
|||
ADDMETHOD_CONST_NOBASE(getL3CacheBankSizeInKb, uint64_t, {}, ());
|
||||
ADDMETHOD_CONST_NOBASE(getAdditionalFp16Caps, uint32_t, {}, ());
|
||||
ADDMETHOD_CONST_NOBASE(getAdditionalExtraCaps, uint32_t, {}, ());
|
||||
ADDMETHOD_CONST_NOBASE(getStackSizePerRay, uint32_t, {}, ());
|
||||
ADDMETHOD_CONST_NOBASE(isLocalOnlyAllowed, bool, {}, ());
|
||||
ADDMETHOD_CONST_NOBASE(isDisablingMsaaRequired, bool, false, ());
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include "shared/source/helpers/array_count.h"
|
||||
#include "shared/source/helpers/driver_model_type.h"
|
||||
#include "shared/source/helpers/gfx_core_helper.h"
|
||||
#include "shared/source/helpers/ray_tracing_helper.h"
|
||||
#include "shared/source/memory_manager/allocations_list.h"
|
||||
#include "shared/source/memory_manager/gfx_partition.h"
|
||||
#include "shared/source/memory_manager/unified_memory_pooling.h"
|
||||
|
@ -38,6 +39,7 @@
|
|||
#include "shared/test/common/mocks/ult_device_factory.h"
|
||||
#include "shared/test/common/test_macros/hw_test.h"
|
||||
#include "shared/test/common/test_macros/test.h"
|
||||
|
||||
using namespace NEO;
|
||||
extern ApiSpecificConfig::ApiType apiTypeForUlts;
|
||||
namespace NEO {
|
||||
|
@ -241,6 +243,20 @@ TEST_F(DeviceTest, whenAllocateRTDispatchGlobalsIsCalledThenRTDispatchGlobalsIsA
|
|||
EXPECT_NE(nullptr, pDevice->getRTDispatchGlobals(3));
|
||||
}
|
||||
|
||||
TEST_F(DeviceTest, whenAllocateRTDispatchGlobalsIsCalledThenStackSizePerRayIsSetCorrectly) {
|
||||
pDevice->initializeRayTracing(5);
|
||||
pDevice->allocateRTDispatchGlobals(3);
|
||||
EXPECT_NE(nullptr, pDevice->getRTDispatchGlobals(3));
|
||||
struct RTDispatchGlobals dispatchGlobals = *reinterpret_cast<struct RTDispatchGlobals *>(pDevice->getRTDispatchGlobals(3)->rtDispatchGlobalsArray->getUnderlyingBuffer());
|
||||
|
||||
auto releaseHelper = getReleaseHelper();
|
||||
if (releaseHelper) {
|
||||
EXPECT_EQ(dispatchGlobals.stackSizePerRay, releaseHelper->getStackSizePerRay());
|
||||
} else {
|
||||
EXPECT_EQ(dispatchGlobals.stackSizePerRay, 0u);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(DeviceTest, givenNot48bResourceForRtWhenAllocateRTDispatchGlobalsIsCalledThenRTDispatchGlobalsIsAllocatedWithout48bResourceFlag) {
|
||||
auto mockProductHelper = std::make_unique<MockProductHelper>();
|
||||
mockProductHelper->is48bResourceNeededForRayTracingResult = false;
|
||||
|
|
|
@ -39,6 +39,7 @@ TEST_F(ReleaseHelper1255Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
|||
EXPECT_FALSE(releaseHelper->isBindlessAddressingDisabled());
|
||||
EXPECT_TRUE(releaseHelper->isGlobalBindlessAllocatorEnabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_EQ(0u, releaseHelper->getStackSizePerRay());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_FALSE(releaseHelper->isDisablingMsaaRequired());
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ TEST_F(ReleaseHelper1256Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
|||
EXPECT_FALSE(releaseHelper->isBindlessAddressingDisabled());
|
||||
EXPECT_TRUE(releaseHelper->isGlobalBindlessAllocatorEnabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_EQ(0u, releaseHelper->getStackSizePerRay());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_FALSE(releaseHelper->isDisablingMsaaRequired());
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ TEST_F(ReleaseHelper1257Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
|||
EXPECT_FALSE(releaseHelper->isBindlessAddressingDisabled());
|
||||
EXPECT_TRUE(releaseHelper->isGlobalBindlessAllocatorEnabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_EQ(0u, releaseHelper->getStackSizePerRay());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_FALSE(releaseHelper->isDisablingMsaaRequired());
|
||||
}
|
||||
|
|
|
@ -36,6 +36,7 @@ TEST_F(ReleaseHelper1260Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
|||
EXPECT_TRUE(releaseHelper->isRcsExposureDisabled());
|
||||
EXPECT_TRUE(releaseHelper->isBindlessAddressingDisabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_EQ(0u, releaseHelper->getStackSizePerRay());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_FALSE(releaseHelper->isDisablingMsaaRequired());
|
||||
}
|
||||
|
|
|
@ -35,6 +35,7 @@ TEST_F(ReleaseHelper1261Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
|||
EXPECT_TRUE(releaseHelper->isRcsExposureDisabled());
|
||||
EXPECT_TRUE(releaseHelper->isBindlessAddressingDisabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_EQ(0u, releaseHelper->getStackSizePerRay());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_FALSE(releaseHelper->isDisablingMsaaRequired());
|
||||
}
|
||||
|
|
|
@ -40,6 +40,7 @@ TEST_F(ReleaseHelper1270Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
|||
EXPECT_FALSE(releaseHelper->isBindlessAddressingDisabled());
|
||||
EXPECT_TRUE(releaseHelper->isGlobalBindlessAllocatorEnabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_EQ(0u, releaseHelper->getStackSizePerRay());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_FALSE(releaseHelper->isDisablingMsaaRequired());
|
||||
}
|
||||
|
|
|
@ -40,6 +40,7 @@ TEST_F(ReleaseHelper1271Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
|||
EXPECT_FALSE(releaseHelper->isBindlessAddressingDisabled());
|
||||
EXPECT_TRUE(releaseHelper->isGlobalBindlessAllocatorEnabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_EQ(0u, releaseHelper->getStackSizePerRay());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_FALSE(releaseHelper->isDisablingMsaaRequired());
|
||||
}
|
||||
|
|
|
@ -38,6 +38,7 @@ TEST_F(ReleaseHelper1274Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
|||
EXPECT_FALSE(releaseHelper->isRcsExposureDisabled());
|
||||
EXPECT_TRUE(releaseHelper->isBindlessAddressingDisabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_EQ(0u, releaseHelper->getStackSizePerRay());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_FALSE(releaseHelper->isDisablingMsaaRequired());
|
||||
}
|
||||
|
|
|
@ -38,6 +38,7 @@ TEST_F(ReleaseHelper2001Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
|||
EXPECT_TRUE(releaseHelper->isRcsExposureDisabled());
|
||||
EXPECT_FALSE(releaseHelper->isBindlessAddressingDisabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_EQ(0u, releaseHelper->getStackSizePerRay());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_FALSE(releaseHelper->isDisablingMsaaRequired());
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ TEST_F(ReleaseHelper2004Tests, whenGettingCapabilitiesThenCorrectPropertiesAreRe
|
|||
EXPECT_TRUE(releaseHelper->isRcsExposureDisabled());
|
||||
EXPECT_FALSE(releaseHelper->isBindlessAddressingDisabled());
|
||||
EXPECT_EQ(8u, releaseHelper->getNumThreadsPerEu());
|
||||
EXPECT_EQ(0u, releaseHelper->getStackSizePerRay());
|
||||
EXPECT_TRUE(releaseHelper->isRayTracingSupported());
|
||||
EXPECT_FALSE(releaseHelper->isDisablingMsaaRequired());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue