mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-22 10:17:01 +08:00
fix: Do not update ulls tag when ring not started
When ring is not started ulls tag update is not dispatched. Counter should reflect that. Resolves: GSD-11312 Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
42826b562d
commit
a1ec6bc243
@@ -257,7 +257,9 @@ size_t DrmDirectSubmission<GfxFamily, Dispatcher>::dispatchStopRingBufferSection
|
|||||||
template <typename GfxFamily, typename Dispatcher>
|
template <typename GfxFamily, typename Dispatcher>
|
||||||
void DrmDirectSubmission<GfxFamily, Dispatcher>::handleSwitchRingBuffers(ResidencyContainer *allocationsForResidency) {
|
void DrmDirectSubmission<GfxFamily, Dispatcher>::handleSwitchRingBuffers(ResidencyContainer *allocationsForResidency) {
|
||||||
if (this->disableMonitorFence) {
|
if (this->disableMonitorFence) {
|
||||||
this->currentTagData.tagValue++;
|
if (this->ringStart) {
|
||||||
|
this->currentTagData.tagValue++;
|
||||||
|
}
|
||||||
|
|
||||||
bool updateCompletionFences = true;
|
bool updateCompletionFences = true;
|
||||||
if (debugManager.flags.EnableRingSwitchTagUpdateWa.get() != -1) {
|
if (debugManager.flags.EnableRingSwitchTagUpdateWa.get() != -1) {
|
||||||
|
|||||||
@@ -1146,15 +1146,28 @@ HWTEST_F(DrmDirectSubmissionTest, givenBlitterDispatcherAndMultiTileDeviceWhenCr
|
|||||||
bool ret = directSubmission.allocateResources();
|
bool ret = directSubmission.allocateResources();
|
||||||
EXPECT_TRUE(ret);
|
EXPECT_TRUE(ret);
|
||||||
}
|
}
|
||||||
HWTEST_F(DrmDirectSubmissionTest, givenDrmDirectSubmissionWhenHandleSwitchRingBufferCalledThenPrevRingBufferHasUpdatedFenceValue) {
|
HWTEST_F(DrmDirectSubmissionTest, givenDrmDirectSubmissionStartedWhenHandleSwitchRingBufferCalledThenPrevRingBufferHasUpdatedFenceValue) {
|
||||||
MockDrmDirectSubmission<FamilyType, RenderDispatcher<FamilyType>> drmDirectSubmission(*device->getDefaultEngine().commandStreamReceiver);
|
MockDrmDirectSubmission<FamilyType, RenderDispatcher<FamilyType>> drmDirectSubmission(*device->getDefaultEngine().commandStreamReceiver);
|
||||||
auto prevCompletionFenceVal = 1u;
|
auto prevCompletionFenceVal = 1u;
|
||||||
auto prevRingBufferIndex = 0u;
|
auto prevRingBufferIndex = 0u;
|
||||||
auto newCompletionFenceValue = 10u;
|
auto newCompletionFenceValue = 10u;
|
||||||
|
drmDirectSubmission.ringStart = true;
|
||||||
drmDirectSubmission.currentTagData.tagValue = newCompletionFenceValue;
|
drmDirectSubmission.currentTagData.tagValue = newCompletionFenceValue;
|
||||||
drmDirectSubmission.ringBuffers[prevRingBufferIndex].completionFence = prevCompletionFenceVal;
|
drmDirectSubmission.ringBuffers[prevRingBufferIndex].completionFence = prevCompletionFenceVal;
|
||||||
drmDirectSubmission.handleSwitchRingBuffers(nullptr);
|
drmDirectSubmission.handleSwitchRingBuffers(nullptr);
|
||||||
EXPECT_EQ(drmDirectSubmission.ringBuffers[prevRingBufferIndex].completionFence, newCompletionFenceValue + 1);
|
EXPECT_EQ(drmDirectSubmission.ringBuffers[prevRingBufferIndex].completionFence, newCompletionFenceValue + 1);
|
||||||
|
drmDirectSubmission.ringStart = false;
|
||||||
|
}
|
||||||
|
HWTEST_F(DrmDirectSubmissionTest, givenDrmDirectSubmissionNotStartedWhenHandleSwitchRingBufferCalledThenPrevRingBufferHasNotUpdatedFenceValue) {
|
||||||
|
MockDrmDirectSubmission<FamilyType, RenderDispatcher<FamilyType>> drmDirectSubmission(*device->getDefaultEngine().commandStreamReceiver);
|
||||||
|
auto prevCompletionFenceVal = 1u;
|
||||||
|
auto prevRingBufferIndex = 0u;
|
||||||
|
auto newCompletionFenceValue = 10u;
|
||||||
|
drmDirectSubmission.ringStart = false;
|
||||||
|
drmDirectSubmission.currentTagData.tagValue = newCompletionFenceValue;
|
||||||
|
drmDirectSubmission.ringBuffers[prevRingBufferIndex].completionFence = prevCompletionFenceVal;
|
||||||
|
drmDirectSubmission.handleSwitchRingBuffers(nullptr);
|
||||||
|
EXPECT_EQ(drmDirectSubmission.ringBuffers[prevRingBufferIndex].completionFence, newCompletionFenceValue);
|
||||||
}
|
}
|
||||||
HWTEST_F(DrmDirectSubmissionTest, givenDrmDirectSubmissionWhenEnableRingSwitchTagUpdateWaEnabledAndRingNotStartedThenCompletionFenceIsNotUpdated) {
|
HWTEST_F(DrmDirectSubmissionTest, givenDrmDirectSubmissionWhenEnableRingSwitchTagUpdateWaEnabledAndRingNotStartedThenCompletionFenceIsNotUpdated) {
|
||||||
DebugManagerStateRestore dbgRestorer;
|
DebugManagerStateRestore dbgRestorer;
|
||||||
@@ -1195,10 +1208,12 @@ HWTEST_F(DrmDirectSubmissionTest, givenDrmDirectSubmissionWhenEnableRingSwitchTa
|
|||||||
auto prevRingBufferIndex = 0u;
|
auto prevRingBufferIndex = 0u;
|
||||||
auto newCompletionFenceValue = 10u;
|
auto newCompletionFenceValue = 10u;
|
||||||
|
|
||||||
|
drmDirectSubmission.ringStart = true;
|
||||||
drmDirectSubmission.currentTagData.tagValue = newCompletionFenceValue;
|
drmDirectSubmission.currentTagData.tagValue = newCompletionFenceValue;
|
||||||
drmDirectSubmission.ringBuffers[prevRingBufferIndex].completionFence = prevCompletionFenceVal;
|
drmDirectSubmission.ringBuffers[prevRingBufferIndex].completionFence = prevCompletionFenceVal;
|
||||||
drmDirectSubmission.handleSwitchRingBuffers(nullptr);
|
drmDirectSubmission.handleSwitchRingBuffers(nullptr);
|
||||||
EXPECT_EQ(drmDirectSubmission.ringBuffers[prevRingBufferIndex].completionFence, newCompletionFenceValue + 1);
|
EXPECT_EQ(drmDirectSubmission.ringBuffers[prevRingBufferIndex].completionFence, newCompletionFenceValue + 1);
|
||||||
|
drmDirectSubmission.ringStart = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
HWTEST_F(DrmDirectSubmissionTest, givenDrmDirectSubmissionWhenGettingDefaultInputMonitorFencePolicyThenDefaultIsTrue) {
|
HWTEST_F(DrmDirectSubmissionTest, givenDrmDirectSubmissionWhenGettingDefaultInputMonitorFencePolicyThenDefaultIsTrue) {
|
||||||
|
|||||||
Reference in New Issue
Block a user