mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-30 09:58:55 +08:00
fix: define timestamp mask based on timer resolution
Related-To: HSD-18034577551 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
f9f5377218
commit
1e18bf0392
@@ -717,8 +717,8 @@ char const *GfxCoreHelperHw<GfxFamily>::getDefaultDeviceHierarchy() const {
|
||||
|
||||
template <typename GfxFamily>
|
||||
uint64_t GfxCoreHelperHw<GfxFamily>::getGpuTimeStampInNS(uint64_t timeStamp, double resolution) const {
|
||||
UNRECOVERABLE_IF(resolution > 127.0);
|
||||
constexpr auto timestampMask = maxNBitValue(57);
|
||||
auto numBitsForResolution = Math::log2(static_cast<uint64_t>(resolution)) + 1u;
|
||||
auto timestampMask = maxNBitValue(64 - numBitsForResolution);
|
||||
return static_cast<uint64_t>(static_cast<uint64_t>(timeStamp & timestampMask) * resolution);
|
||||
}
|
||||
|
||||
|
||||
@@ -149,14 +149,33 @@ HWTEST2_F(GfxCoreHelperTest, givenGfxCoreHelperWhenGettingThreadsPerEUConfigsThe
|
||||
EXPECT_EQ(0U, configs.size());
|
||||
}
|
||||
|
||||
TEST_F(GfxCoreHelperTest, givenGfxCoreHelperWhenGetGpuTimeStampInNSIsCalledThenCorrectValueIsReturned) {
|
||||
TEST_F(GfxCoreHelperTest, whenGetGpuTimeStampInNSIsCalledThenTimestampIsMaskedBasedOnResolution) {
|
||||
auto &gfxCoreHelper = getHelper<GfxCoreHelper>();
|
||||
|
||||
auto timeStamp0 = 0x00ff'ffff'ffff;
|
||||
auto timeStamp1 = 0xfe00'00ff'ffff'ffff;
|
||||
auto resolution = 123.0;
|
||||
auto result = static_cast<uint64_t>(timeStamp0 * resolution);
|
||||
EXPECT_EQ(result, gfxCoreHelper.getGpuTimeStampInNS(timeStamp0, resolution));
|
||||
EXPECT_EQ(result, gfxCoreHelper.getGpuTimeStampInNS(timeStamp1, resolution));
|
||||
auto timeStamp2 = 0xff00'00ff'ffff'ffff;
|
||||
{
|
||||
auto resolution = 135.0;
|
||||
auto result = static_cast<uint64_t>(timeStamp0 * resolution);
|
||||
EXPECT_EQ(result, gfxCoreHelper.getGpuTimeStampInNS(timeStamp0, resolution));
|
||||
EXPECT_EQ(result, gfxCoreHelper.getGpuTimeStampInNS(timeStamp1, resolution));
|
||||
EXPECT_EQ(result, gfxCoreHelper.getGpuTimeStampInNS(timeStamp2, resolution));
|
||||
}
|
||||
{
|
||||
auto resolution = 128.0;
|
||||
auto result = static_cast<uint64_t>(timeStamp0 * resolution);
|
||||
EXPECT_EQ(result, gfxCoreHelper.getGpuTimeStampInNS(timeStamp0, resolution));
|
||||
EXPECT_EQ(result, gfxCoreHelper.getGpuTimeStampInNS(timeStamp1, resolution));
|
||||
EXPECT_EQ(result, gfxCoreHelper.getGpuTimeStampInNS(timeStamp2, resolution));
|
||||
}
|
||||
{
|
||||
auto resolution = 127.0;
|
||||
auto result = static_cast<uint64_t>(timeStamp0 * resolution);
|
||||
EXPECT_EQ(result, gfxCoreHelper.getGpuTimeStampInNS(timeStamp0, resolution));
|
||||
EXPECT_EQ(result, gfxCoreHelper.getGpuTimeStampInNS(timeStamp1, resolution));
|
||||
EXPECT_NE(result, gfxCoreHelper.getGpuTimeStampInNS(timeStamp2, resolution));
|
||||
}
|
||||
}
|
||||
|
||||
TEST(DwordBuilderTest, WhenSettingNonMaskedBitsThenOnlySelectedBitAreSet) {
|
||||
|
||||
Reference in New Issue
Block a user