Add private scratch space allocation to scratch space controller
Related-To: NEO-3190 Change-Id: I8100bb1db99700c2aac487e443a872f56c887dd1 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
parent
da09c70e8c
commit
373dd2021b
|
@ -224,6 +224,7 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::flushTask(
|
|||
if (requiredScratchSize) {
|
||||
scratchSpaceController->setRequiredScratchSpace(ssh.getCpuBase(),
|
||||
requiredScratchSize,
|
||||
0u,
|
||||
this->taskCount,
|
||||
this->osContext->getContextId(),
|
||||
stateBaseAddressDirty,
|
||||
|
|
|
@ -28,8 +28,12 @@ class ScratchSpaceController {
|
|||
GraphicsAllocation *getScratchSpaceAllocation() {
|
||||
return scratchAllocation;
|
||||
}
|
||||
GraphicsAllocation *getPrivateScratchSpaceAllocation() {
|
||||
return privateScratchAllocation;
|
||||
}
|
||||
virtual void setRequiredScratchSpace(void *sshBaseAddress,
|
||||
uint32_t requiredPerThreadScratchSize,
|
||||
uint32_t requiredPerThreadPrivateScratchSize,
|
||||
uint32_t currentTaskCount,
|
||||
uint32_t deviceIdx,
|
||||
bool &stateBaseAddressDirty,
|
||||
|
@ -44,8 +48,10 @@ class ScratchSpaceController {
|
|||
|
||||
ExecutionEnvironment &executionEnvironment;
|
||||
GraphicsAllocation *scratchAllocation = nullptr;
|
||||
GraphicsAllocation *privateScratchAllocation = nullptr;
|
||||
InternalAllocationStorage &csrAllocationStorage;
|
||||
size_t scratchSizeBytes = 0;
|
||||
size_t privateScratchSizeBytes = 0;
|
||||
bool force32BitAllocation = false;
|
||||
uint32_t computeUnitsUsedForScratch = 0;
|
||||
};
|
||||
|
|
|
@ -23,6 +23,7 @@ ScratchSpaceControllerBase::ScratchSpaceControllerBase(ExecutionEnvironment &env
|
|||
|
||||
void ScratchSpaceControllerBase::setRequiredScratchSpace(void *sshBaseAddress,
|
||||
uint32_t requiredPerThreadScratchSize,
|
||||
uint32_t requiredPerThreadPrivateScratchSize,
|
||||
uint32_t currentTaskCount,
|
||||
uint32_t contextId,
|
||||
bool &stateBaseAddressDirty,
|
||||
|
|
|
@ -16,6 +16,7 @@ class ScratchSpaceControllerBase : public ScratchSpaceController {
|
|||
|
||||
void setRequiredScratchSpace(void *sshBaseAddress,
|
||||
uint32_t requiredPerThreadScratchSize,
|
||||
uint32_t requiredPerThreadPrivateScratchSize,
|
||||
uint32_t currentTaskCount,
|
||||
uint32_t contextId,
|
||||
bool &stateBaseAddressDirty,
|
||||
|
|
|
@ -235,10 +235,11 @@ HWTEST_F(CommandStreamReceiverHwTest, WhenScratchSpaceIsNotRequiredThenScratchAl
|
|||
|
||||
bool stateBaseAddressDirty = false;
|
||||
bool cfeStateDirty = false;
|
||||
scratchController->setRequiredScratchSpace(reinterpret_cast<void *>(0x2000), 0u, 0u, 0u, stateBaseAddressDirty, cfeStateDirty);
|
||||
scratchController->setRequiredScratchSpace(reinterpret_cast<void *>(0x2000), 0u, 0u, 0u, 0u, stateBaseAddressDirty, cfeStateDirty);
|
||||
EXPECT_FALSE(cfeStateDirty);
|
||||
EXPECT_FALSE(stateBaseAddressDirty);
|
||||
EXPECT_EQ(nullptr, scratchController->getScratchSpaceAllocation());
|
||||
EXPECT_EQ(nullptr, scratchController->getPrivateScratchSpaceAllocation());
|
||||
}
|
||||
|
||||
HWTEST_F(CommandStreamReceiverHwTest, WhenScratchSpaceIsRequiredThenCorrectAddressIsReturned) {
|
||||
|
@ -249,7 +250,7 @@ HWTEST_F(CommandStreamReceiverHwTest, WhenScratchSpaceIsRequiredThenCorrectAddre
|
|||
bool stateBaseAddressDirty = false;
|
||||
|
||||
std::unique_ptr<void, std::function<decltype(alignedFree)>> surfaceHeap(alignedMalloc(0x1000, 0x1000), alignedFree);
|
||||
scratchController->setRequiredScratchSpace(surfaceHeap.get(), 0x1000u, 0u, 0u, stateBaseAddressDirty, cfeStateDirty);
|
||||
scratchController->setRequiredScratchSpace(surfaceHeap.get(), 0x1000u, 0u, 0u, 0u, stateBaseAddressDirty, cfeStateDirty);
|
||||
|
||||
uint64_t expectedScratchAddress = 0xAAABBBCCCDDD000ull;
|
||||
auto scratchAllocation = scratchController->getScratchSpaceAllocation();
|
||||
|
|
Loading…
Reference in New Issue