Deferred Pipe Control programming and CSR flush on Barrier request

Change-Id: Iabae0f9159bb455518cedf7da068c7d3da72b840
Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com>
This commit is contained in:
Dunajski, Bartosz
2018-10-15 10:35:45 +02:00
committed by sys_ocldev
parent 7a476b7bc1
commit 6d610983f1
10 changed files with 77 additions and 126 deletions

View File

@@ -118,6 +118,7 @@ class CommandStreamReceiver {
void cleanupResources();
void requestThreadArbitrationPolicy(uint32_t requiredPolicy) { this->requiredThreadArbitrationPolicy = requiredPolicy; }
void requestStallingPipeControlOnNextFlush() { stallingPipeControlOnNextFlushRequired = true; }
virtual void waitForTaskCountWithKmdNotifyFallback(uint32_t taskCountToWait, FlushStamp flushStampToWait, bool useQuickKmdSleep, OsContext &osContext) = 0;
MOCKABLE_VIRTUAL bool waitForCompletionWithTimeout(bool enableTimeout, int64_t timeoutMicroseconds, uint32_t taskCountToWait);
@@ -186,6 +187,7 @@ class CommandStreamReceiver {
LinearStream commandStream;
bool stallingPipeControlOnNextFlushRequired = false;
uint32_t requiredThreadArbitrationPolicy = ThreadArbitrationPolicy::RoundRobin;
uint32_t lastSentThreadArbitrationPolicy = ThreadArbitrationPolicy::NotPresent;