mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-21 09:14:47 +08:00
Extend scratch implementation
Change-Id: I1bbc0c9be287b1411276b1e61a7ec1c8db238f3f
This commit is contained in:
committed by
sys_ocldev
parent
bd9695a19a
commit
ce7e293a99
@@ -280,6 +280,7 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::flushTask(
|
||||
bool checkVfeStateDirty = false;
|
||||
if (requiredScratchSize || requiredPrivateScratchSize) {
|
||||
scratchSpaceController->setRequiredScratchSpace(ssh.getCpuBase(),
|
||||
0u,
|
||||
requiredScratchSize,
|
||||
requiredPrivateScratchSize,
|
||||
this->taskCount,
|
||||
|
||||
@@ -21,6 +21,8 @@ class MemoryManager;
|
||||
struct HardwareInfo;
|
||||
class OsContext;
|
||||
|
||||
using HeapContainer = std::vector<IndirectHeap *>;
|
||||
|
||||
namespace ScratchSpaceConstants {
|
||||
constexpr size_t scratchSpaceOffsetFor64Bit = 4096u;
|
||||
}
|
||||
@@ -37,6 +39,7 @@ class ScratchSpaceController {
|
||||
return privateScratchAllocation;
|
||||
}
|
||||
virtual void setRequiredScratchSpace(void *sshBaseAddress,
|
||||
uint32_t scratchSlot,
|
||||
uint32_t requiredPerThreadScratchSize,
|
||||
uint32_t requiredPerThreadPrivateScratchSize,
|
||||
uint32_t currentTaskCount,
|
||||
@@ -47,6 +50,14 @@ class ScratchSpaceController {
|
||||
virtual uint64_t getScratchPatchAddress() = 0;
|
||||
|
||||
virtual void reserveHeap(IndirectHeap::Type heapType, IndirectHeap *&indirectHeap) = 0;
|
||||
virtual void programHeaps(HeapContainer &heapContainer,
|
||||
uint32_t scratchSlot,
|
||||
uint32_t requiredPerThreadScratchSize,
|
||||
uint32_t requiredPerThreadPrivateScratchSize,
|
||||
uint32_t currentTaskCount,
|
||||
OsContext &osContext,
|
||||
bool &stateBaseAddressDirty,
|
||||
bool &vfeStateDirty) = 0;
|
||||
|
||||
protected:
|
||||
MemoryManager *getMemoryManager() const;
|
||||
|
||||
@@ -23,6 +23,7 @@ ScratchSpaceControllerBase::ScratchSpaceControllerBase(uint32_t rootDeviceIndex,
|
||||
}
|
||||
|
||||
void ScratchSpaceControllerBase::setRequiredScratchSpace(void *sshBaseAddress,
|
||||
uint32_t scratchSlot,
|
||||
uint32_t requiredPerThreadScratchSize,
|
||||
uint32_t requiredPerThreadPrivateScratchSize,
|
||||
uint32_t currentTaskCount,
|
||||
@@ -80,4 +81,13 @@ void ScratchSpaceControllerBase::reserveHeap(IndirectHeap::Type heapType, Indire
|
||||
}
|
||||
}
|
||||
|
||||
void ScratchSpaceControllerBase::programHeaps(HeapContainer &heapContainer,
|
||||
uint32_t offset,
|
||||
uint32_t requiredPerThreadScratchSize,
|
||||
uint32_t requiredPerThreadPrivateScratchSize,
|
||||
uint32_t currentTaskCount,
|
||||
OsContext &osContext,
|
||||
bool &stateBaseAddressDirty,
|
||||
bool &vfeStateDirty) {
|
||||
}
|
||||
} // namespace NEO
|
||||
|
||||
@@ -15,6 +15,7 @@ class ScratchSpaceControllerBase : public ScratchSpaceController {
|
||||
ScratchSpaceControllerBase(uint32_t rootDeviceIndex, ExecutionEnvironment &environment, InternalAllocationStorage &allocationStorage);
|
||||
|
||||
void setRequiredScratchSpace(void *sshBaseAddress,
|
||||
uint32_t scratchSlot,
|
||||
uint32_t requiredPerThreadScratchSize,
|
||||
uint32_t requiredPerThreadPrivateScratchSize,
|
||||
uint32_t currentTaskCount,
|
||||
@@ -25,6 +26,14 @@ class ScratchSpaceControllerBase : public ScratchSpaceController {
|
||||
uint64_t getScratchPatchAddress() override;
|
||||
|
||||
void reserveHeap(IndirectHeap::Type heapType, IndirectHeap *&indirectHeap) override;
|
||||
void programHeaps(HeapContainer &heapContainer,
|
||||
uint32_t scratchSlot,
|
||||
uint32_t requiredPerThreadScratchSize,
|
||||
uint32_t requiredPerThreadPrivateScratchSize,
|
||||
uint32_t currentTaskCount,
|
||||
OsContext &osContext,
|
||||
bool &stateBaseAddressDirty,
|
||||
bool &vfeStateDirty) override;
|
||||
|
||||
protected:
|
||||
void createScratchSpaceAllocation();
|
||||
|
||||
Reference in New Issue
Block a user