Add support for stateless fill buffer

Change-Id: I6dac17090e499f013916b1ba2f2b6d0de47f51a3
Signed-off-by: Kamil Kopryk <kamil.kopryk@intel.com>
Related-To: NEO-3314
This commit is contained in:
Kamil Kopryk
2019-10-29 14:23:32 +01:00
committed by sys_ocldev
parent 0db28144ec
commit dc0272d86a
9 changed files with 198 additions and 20 deletions

View File

@@ -46,10 +46,14 @@ cl_int CommandQueueHw<GfxFamily>::enqueueFillBuffer(
memcpy_s(patternAllocation->getUnderlyingBuffer(), patternSize, pattern, patternSize);
}
MultiDispatchInfo dispatchInfo;
auto eBuiltInOps = EBuiltInOps::FillBuffer;
if (forceStateless(size)) {
eBuiltInOps = EBuiltInOps::FillBufferStateless;
}
auto &builder = getDevice().getExecutionEnvironment()->getBuiltIns()->getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer,
this->getContext(), this->getDevice());
auto &builder = getDevice().getExecutionEnvironment()->getBuiltIns()->getBuiltinDispatchInfoBuilder(eBuiltInOps,
this->getContext(),
this->getDevice());
BuiltInOwnershipWrapper builtInLock(builder, this->context);
@@ -60,6 +64,8 @@ cl_int CommandQueueHw<GfxFamily>::enqueueFillBuffer(
dc.dstMemObj = buffer;
dc.dstOffset = {offset, 0, 0};
dc.size = {size, 0, 0};
MultiDispatchInfo dispatchInfo;
builder.buildDispatchInfos(dispatchInfo, dc);
MemObjSurface s1(buffer);